记录:Unity脚本的编写8.0

目录

  • 需求分析
  • 设计GUI
  • 包含账号和密码输入栏,包括登录和注册按键
  • 添加背景音乐
    • 编写脚本控制音乐
  • 退出按钮
    • 编写脚本
  • 背景图片
  • 完整代码

一个小demo,登录和注册的实现(包括GUI和数据库操控)

需求分析

自行设计GUI,要求
1.包含账号和密码输入栏,包括登录和注册按键
2.添加背景音乐,使用GUI控制音乐音量和开关
3.退出按钮
4.背景图片,可操控的文本对象用于提示登录是否成功

设计GUI

记录:Unity脚本的编写8.0_第1张图片
简单设计了一个GUI界面,包括了输入用户名密码,登录,注册,退出,控制音乐等功能,当然还有一些其他功能,这是为了拓展,先不实现,日后再实现功能

包含账号和密码输入栏,包括登录和注册按键

先添加好账号和密码输入栏,包括登录和注册按钮(当然,输入框也是不可或缺的)
连接好mysql后编写脚本控制实现登录和注册功能

public void login()
{
    username = inputField1.text;
    password = inputField2.text;
    //1.连接并打开数据库
     ConnectDB();
    //2.查找用户名和密码
    SelectDB(username);
    //3.关闭数据库
    Close();
    //4.对比用户名和密码
   CompareDB();
}
public void register()
{
    username = inputField1.text;
    password = inputField2.text;
    //1.连接并打开数据库
    ConnectDB();
    //2.查找用户名和密码
    SelectDB(username);
    //3.添加用户名和密码
    InsertDB(username,password);
    //4.关闭数据库
    Close ();
}
private int InsertDB(string n,string p)
{
    //写sql语句
    string strSql = "insert into qquser(QQUserId,QQPassword) values('" + n +"','" + p + "');";
    //使用MySqlCommand发送语句
    using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
    {
        //执行ExecuteNonQuery方法
        return mySqlCommand.ExecuteNonQuery();
    }
}
private void ConnectDB()
{
    sqlConnection = new MySqlConnection(strConn);
    try
    {           
        sqlConnection.Open();
        Debug.Log(sqlConnection.State);
    }catch (Exception)
    {
        
    }
}
private void SelectDB(string n)
{
    //写sql语句
    string strSql = "select * from qquser where QQUserId= '" + n + "';";
    //使用MySqlCommand发送语句
    using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
    {
        //执行ExecuteReader方法
        using (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader())
        {
            //通过MySqlDataReader读取数据
            while (mySqlDataReader.Read())
            {
                usernameDB= mySqlDataReader.GetString(0);
                passwordDB= mySqlDataReader.GetString(1);
            }
        }
    }
}
private void Close()
{
    if (sqlConnection.State.ToString() == "open")
    {
        //操作数据库的最后一步
        sqlConnection.Close();
    }
}
    private void CompareDB()
    {
        if(username == usernameDB && password == passwordDB)
        {
            SceneManager.LoadScene(1);
            //方法的重载

            //tip.text= "登录成功";
        }
        else
        {
            tip.text = "登录失败";
        }
    }
}

同时还可以在提示栏提示是否登录成功

添加背景音乐

像之前说的一样,先导入音乐到unity中
记录:Unity脚本的编写8.0_第2张图片
给我们想要添加音乐的场景添加这个组件 Audio Source
记录:Unity脚本的编写8.0_第3张图片

编写脚本控制音乐

public class Login : MonoBehaviour
{
   
    //控制声音的Gui组件
    AudioSource ads;
    public Slider slider;
    public Toggle toggle;
    public Button button;
    void Start()
        {
        ads = GetComponent();
        toggle.onValueChanged.AddListener(PlayMusic);
        slider.onValueChanged.AddListener(ChangeVolume);
        button.onClick.AddListener(QuitGAme);
        }
    
    private void QuitGAme()
    {
        Application.Quit();
    }
    private void ChangeVolume(float arg0)
    {
        ads.volume = arg0;
    }

    private void PlayMusic(bool arg0)
    {
        if (arg0)
        {
            ads.Pause();
        }
    }

}

记录:Unity脚本的编写8.0_第4张图片
记得在“音频剪辑”中选择想要的音乐,否则无法运行出想要的结果

退出按钮

既然可以打开或登录,那自然也可以退出

编写脚本

private void exit()
{
    //判断是否在编辑器模式下运行
    #if UNITY_EDITOR
    //如果是,就停止播放
    UnityEditor.EditorApplication.isPlaying = false;
    #else
    //如果不是,就退出应用
    Application.Quit();
    #endif
}

这样就可以实现退出的逻辑
当然,挂载脚本和选择对应的按钮等步骤是必不可少的,在此就不多做赘述

背景图片

添加背景图片只需要在unity中创建原始图像
记录:Unity脚本的编写8.0_第5张图片
并且在纹理中,可以自定义图片,像文中这样
记录:Unity脚本的编写8.0_第6张图片
至于显示登录成功与否的操作,在上面的登录注册中已经实现

完整代码

分为了两个脚本,可以自行操作

/**
 * 自行设计GUI,要求
 * 1.包含账号和密码输入栏,包括登录和注册按键
 * 2.添加背景音乐,使用GUI控制音乐音量和开关
 * 3.退出按钮
 * 4.背景图片,可操控的文本对象用于提示登录是否成功
 * **/

using System.Collections;
using UnityEngine;
//using UnityEngine.UIElements;
using System;
using UnityEngine.UI;

public class Login : MonoBehaviour
{
   
    //控制声音的Gui组件
    AudioSource ads;
    public Slider slider;
    public Toggle toggle;
    public Button button;
    void Start()
        {
        ads = GetComponent();
        toggle.onValueChanged.AddListener(PlayMusic);
        slider.onValueChanged.AddListener(ChangeVolume);
        button.onClick.AddListener(QuitGAme);
        }
    
    private void QuitGAme()
    {
        Application.Quit();
    }
    private void ChangeVolume(float arg0)
    {
        ads.volume = arg0;
    }

    private void PlayMusic(bool arg0)
    {
        if (arg0)
        {
            ads.Pause();
        }
    }

}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MySql.Data.MySqlClient;
using UnityEngine.UI;
using TMPro;
using System;
using Unity.VisualScripting;
using UnityEngine.UIElements;
using UnityEngine.SceneManagement;

public class Login1 : MonoBehaviour
{
    //创建GUI
    public TMP_InputField inputField1;
    public TMP_InputField inputField2;
    public UnityEngine.UI.Button button1;
    public UnityEngine.UI.Button button2;
    public UnityEngine.UI.Button button3;
    public UnityEngine.UI.Button button4;
    public Text tip;
    //创建数据库
    //服务器名称,端口号,数据库,用户名,密码,连接形式

    string strConn = "server =localhost;port=3306;database=qqdb;user=root;password=12345678;Charset=utf8";

    //创建Mysql连接器
    MySqlConnection sqlConnection;

    string username;
    string password;
    string usernameDB;
    string passwordDB;
    // Start is called before the first frame update
    void Start()
    {
        button1.onClick.AddListener(login);
        button2.onClick.AddListener(register);
    }

    private void exit()
    {
        //判断是否在编辑器模式下运行
        #if UNITY_EDITOR
        //如果是,就停止播放
        UnityEditor.EditorApplication.isPlaying = false;
        #else
        //如果不是,就退出应用
        Application.Quit();
        #endif
    }

    public void login()
    {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
         ConnectDB();
        //2.查找用户名和密码
        SelectDB(username);
        //3.关闭数据库
        Close();
        //4.对比用户名和密码
       CompareDB();
    }
    public void register()
    {
        username = inputField1.text;
        password = inputField2.text;
        //1.连接并打开数据库
        ConnectDB();
        //2.查找用户名和密码
        SelectDB(username);
        //3.添加用户名和密码
        InsertDB(username,password);
        //4.关闭数据库
        Close ();
    }

    private int InsertDB(string n,string p)
    {
        //写sql语句
        string strSql = "insert into qquser(QQUserId,QQPassword) values('" + n +"','" + p + "');";
        //使用MySqlCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
            //执行ExecuteNonQuery方法
            return mySqlCommand.ExecuteNonQuery();
        }
    }

    private void ConnectDB()
    {
        sqlConnection = new MySqlConnection(strConn);
        try
        {           
            sqlConnection.Open();
            Debug.Log(sqlConnection.State);
        }catch (Exception)
        {
            
        }
    }

    private void Close()
    {
        if (sqlConnection.State.ToString() == "open")
        {
            //操作数据库的最后一步
            sqlConnection.Close();
        }
    }

    private void SelectDB(string n)
    {
        //写sql语句
        string strSql = "select * from qquser where QQUserId= '" + n + "';";
        //使用MySqlCommand发送语句
        using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
        {
            //执行ExecuteReader方法
            using (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader())
            {
                //通过MySqlDataReader读取数据
                while (mySqlDataReader.Read())
                {
                    usernameDB= mySqlDataReader.GetString(0);
                    passwordDB= mySqlDataReader.GetString(1);
                }
            }
        }
    }

    private void CompareDB()
    {
        if(username == usernameDB && password == passwordDB)
        {
            SceneManager.LoadScene(1);
            //方法的重载

            //tip.text= "登录成功";
        }
        else
        {
            tip.text = "登录失败";
        }
    }
}

这样,一个在unity中实现了登录注册功能的GUI就完成了。

你可能感兴趣的:(软件构造,unity,游戏引擎,mysql,ui,c#,visual,studio)