记录:Unity脚本的编写8.0

目录

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

需求分析

自行设计GUI,要求

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

2.添加背景音乐,使用GUI控制音乐音量和开关

3.退出按钮

4.背景图片,可操控的文本对象用于提示登录是否成功

设计GUI

简单设计了一个GUI界面,包括了输入用户名密码,登录,注册,退出,控制音乐等功能,当然还有一些其他功能,这是为了拓展,先不实现,日后再实现功能

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

先添加好账号和密码输入栏,包括登录和注册按钮(当然,输入框也是不可或缺的)

连接好mysql后编写脚本控制实现登录和注册功能

c# 复制代码
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中

给我们想要添加音乐的场景添加这个组件 Audio Source

编写脚本控制音乐

c# 复制代码
public class Login : MonoBehaviour
{
   
    //控制声音的Gui组件
    AudioSource ads;
    public Slider slider;
    public Toggle toggle;
    public Button button;
    void Start()
        {
        ads = GetComponent<AudioSource>();
        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();
        }
    }

}

记得在"音频剪辑"中选择想要的音乐,否则无法运行出想要的结果

退出按钮

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

编写脚本

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

这样就可以实现退出的逻辑

当然,挂载脚本和选择对应的按钮等步骤是必不可少的,在此就不多做赘述

背景图片

添加背景图片只需要在unity中创建原始图像

并且在纹理中,可以自定义图片,像文中这样

至于显示登录成功与否的操作,在上面的登录注册中已经实现

完整代码

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

c# 复制代码
/**
 * 自行设计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<AudioSource>();
        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();
        }
    }

}
c# 复制代码
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就完成了。

相关推荐
OpsEye15 分钟前
MySQL 8.0.40版本自动升级异常的预警提示
数据库·mysql·数据库升级
Ljw...15 分钟前
表的增删改查(MySQL)
数据库·后端·mysql·表的增删查改
syj_1111 小时前
初识ArkUI
ui·arkts·arkui
向宇it8 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
i道i8 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
九鼎科技-Leo8 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Oak Zhang9 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
Heaphaestus,RC9 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
芋芋qwq9 小时前
Unity UI射线检测 道具拖拽
ui·unity·游戏引擎
baivfhpwxf20239 小时前
C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
开发语言·c#