目录
- 需求分析
- 设计GUI
- 包含账号和密码输入栏,包括登录和注册按键
- 添加背景音乐
- 编写脚本控制音乐
- 退出按钮
- 编写脚本
- 背景图片
- 完整代码
一个小demo,登录和注册的实现(包括GUI和数据库操控)
需求分析
自行设计GUI,要求
1.包含账号和密码输入栏,包括登录和注册按键
2.添加背景音乐,使用GUI控制音乐音量和开关
3.退出按钮
4.背景图片,可操控的文本对象用于提示登录是否成功
设计GUI
简单设计了一个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中
给我们想要添加音乐的场景添加这个组件 Audio Source
编写脚本控制音乐
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();
}
}
}
记得在“音频剪辑”中选择想要的音乐,否则无法运行出想要的结果
退出按钮
既然可以打开或登录,那自然也可以退出
编写脚本
private void exit()
{
//判断是否在编辑器模式下运行
#if UNITY_EDITOR
//如果是,就停止播放
UnityEditor.EditorApplication.isPlaying = false;
#else
//如果不是,就退出应用
Application.Quit();
#endif
}
这样就可以实现退出的逻辑
当然,挂载脚本和选择对应的按钮等步骤是必不可少的,在此就不多做赘述
背景图片
添加背景图片只需要在unity中创建原始图像
并且在纹理中,可以自定义图片,像文中这样
至于显示登录成功与否的操作,在上面的登录注册中已经实现
完整代码
分为了两个脚本,可以自行操作
/**
* 自行设计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();
}
}
}
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就完成了。