实验1: 仿真系统的UI主界面设计
1.实验目的
(1)熟悉Unity中UI界面的设计与编写;
(2)熟悉UI界面中场景转换,UI与场景内容相互关联的方式。
(3)熟悉Unity中MySQL数据库的操作
2.实验内容
新建一个Unity场景,在此场景中实现如下功能:
(1)自行设计一个登录、注册UI界面;
(2)添加数据库的动态链接库文件,提前设计数据库表格(自行设计);
(3)连接数据库,实现增、删、改、查等数据库对用户的操作;
(4)UI界面中包括canvas、Image、RawImage、Button等多种UI元素;
(5)实现点击Play按钮转换场景,点击Exit退出游戏的功能;
(6)实现主界面添加音量滑动杆、静音等功能,添加背景音乐和音效音乐;
(7)为UI界面单独设置一个场景,并设置编号为0。
3.实验步骤
第一步:创建UI界面
(1)创建画布,附加背景
创建canvas作为画布,接着创建Raw Image和Image去实现基础背景的搭建
附加图片,并拖拽到和画布一样大小,背景设计完成。
(2)添加交互组件
首先添加InputField组件 作为我们的输入框,去实现账号密码框的设计
右键-->UI--->InputField
可以修改下面的TEXT去修改 输入框的默认内容
接着,添加Text 去搭建一个基本的登录框
添加Button组件,设计登录,注册,退出按钮。
一个简易的登录注册页面完成
接着,添加Dropdown,Toggle,Slider组件 进行排版得到完整的UI界面
第二步:实现交互功能
第四步,添加脚本代码实现功能
- 添加背景音乐,制作静音,调节音量功能
右键--->Audio 添加一个音乐组件
导入音乐素材,拖入Audio组件中
添加脚本实现音量静音与控制
勾选toggle实现,静音
private void PlayMusic(bool arg0)
{
if (arg0)
{
ads.Pause();
}
else
{
ads.Play();
}
}
根据布尔值 判断是否勾选,如果勾选了静音按钮,就关闭音乐
拖动slider实现控制音量
private void ChangeVolume(float arg0)
{
ads.volume = arg0;
}
2.连接数据库,实现登录注册功能
第一步:在官网下载插件MySQL Connector Net
下载安装完成后,添加数据库的动态链接库文件
第二步:创建一个空对象,附加脚本实现连接
/*实现登录注册功能
登录:获取输入框中的字符串--->连接并打开数据库--->查找用户名密码
Y = --->对比密码-->Y=-->关闭数据库--->登录成功
Y = --->对比密码-->N=-->关闭数据库--->登录失败
N = --->关闭数据库--->登录失败
注册:获取输入框中的字符串--->连接并打开数据库--->查找用户名密码
Y =>关闭数据库 --->注册失败
N => 添加用户名密码--->关闭数据库--->注册成功
分解:
1.连接并打开数据库
2.查找用户名密码
3.关闭数据库
4.对比密码
5.添加用户名和密码
接口:登录1234 注册1235
对象:GUI对象 输入框*2 按钮*2,文本数据库:MySQLConnection,..Command...Reader字符串
*/using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using MySql.Data.MySqlClient;
using System;
using UnityEngine.SceneManagement;public class Component9 : MonoBehaviour
{public InputField inputField1;public InputField inputField2;public Button button1;public Button button2;public Text Tip;MySqlConnection sqlConnection;string strConn = "server=localhost;port=3306;Username=root;password=root;Database=2113042122wxh;charset=utf8;";string username;string password;string usernameDB;string passwordDB;// Start is called before the first frame updatevoid Start(){button1.onClick.AddListener(Login);}public void Login(){username = inputField1.text;password = inputField2.text;ConnectDB();SelectDB(username);CloseDB();CompareDB(password);}private void CompareDB(string password){if(username == usernameDB&&password == passwordDB){SceneManager.LoadScene(1);}else{Tip.text = "登录失败";}}private void CloseDB(){if (sqlConnection.State.ToString() == "Open"){sqlConnection.Close();Debug.Log(sqlConnection.State);}}private Boolean SelectDB(String n){string strSql = "select * from tb_user where username = '" + n + "';";using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)){//执行ExecuteNonQuery()方法using (MySqlDataReader reader = mySqlCommand.ExecuteReader()){while (reader.Read()){usernameDB = reader.GetString(1);passwordDB = reader.GetString(2);return true;}}}return false;}public void ConnectDB(){try{sqlConnection = new MySqlConnection(strConn);sqlConnection.Open();Debug.Log(sqlConnection.State);}catch (Exception){throw;}}public void Register(){username = inputField1.text;password = inputField2.text;//连接打开数据库ConnectDB();//查找用户名密码if (SelectDB(username) == true){Tip.text = "用户存在";}else{if (AddDB(username, password) == 1){Tip.text = "添加成功";}else{Tip.text = "添加失败";}}CloseDB();}private int AddDB(string n, string p){//写sql语句string strSql = "insert into tb_user(username,password) values ('" + n + "','" + p + "')";//创建MySQL对象using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection)){//执行ExecuteNonQuery()方法mySqlCommand.ExecuteNonQuery();}return 1;}
}
4.实验心得
省略