实验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 update
void 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.实验心得
省略