• Unity UI设计 软件构造实验报告


    实验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界面

    第二步:实现交互功能

    第四步,添加脚本代码实现功能

    1. 添加背景音乐,制作静音,调节音量功能

    右键--->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

    下载安装完成后,添加数据库的动态链接库文件

    第二步:创建一个空对象,附加脚本实现连接

    1. /*
    2. 实现登录注册功能
    3. 登录:获取输入框中的字符串--->连接并打开数据库--->查找用户名密码
    4. Y = --->对比密码-->Y=-->关闭数据库--->登录成功
    5. Y = --->对比密码-->N=-->关闭数据库--->登录失败
    6. N = --->关闭数据库--->登录失败
    7. 注册:获取输入框中的字符串--->连接并打开数据库--->查找用户名密码
    8. Y =>关闭数据库 --->注册失败
    9. N => 添加用户名密码--->关闭数据库--->注册成功
    10. 分解:
    11. 1.连接并打开数据库
    12. 2.查找用户名密码
    13. 3.关闭数据库
    14. 4.对比密码
    15. 5.添加用户名和密码
    16. 接口:登录1234 注册1235
    17. 对象:GUI对象 输入框*2 按钮*2,文本
    18. 数据库:MySQLConnection,..Command...Reader
    19. 字符串
    20. */
    21. using System.Collections;
    22. using System.Collections.Generic;
    23. using UnityEngine;
    24. using UnityEngine.UI;
    25. using MySql.Data.MySqlClient;
    26. using System;
    27. using UnityEngine.SceneManagement;
    28. public class Component9 : MonoBehaviour
    29. {
    30. public InputField inputField1;
    31. public InputField inputField2;
    32. public Button button1;
    33. public Button button2;
    34. public Text Tip;
    35. MySqlConnection sqlConnection;
    36. string strConn = "server=localhost;port=3306;Username=root;password=root;Database=2113042122wxh;charset=utf8;";
    37. string username;
    38. string password;
    39. string usernameDB;
    40. string passwordDB;
    41. // Start is called before the first frame update
    42. void Start()
    43. {
    44. button1.onClick.AddListener(Login);
    45. }
    46. public void Login()
    47. {
    48. username = inputField1.text;
    49. password = inputField2.text;
    50. ConnectDB();
    51. SelectDB(username);
    52. CloseDB();
    53. CompareDB(password);
    54. }
    55. private void CompareDB(string password)
    56. {
    57. if(username == usernameDB&&password == passwordDB)
    58. {
    59. SceneManager.LoadScene(1);
    60. }
    61. else
    62. {
    63. Tip.text = "登录失败";
    64. }
    65. }
    66. private void CloseDB()
    67. {
    68. if (sqlConnection.State.ToString() == "Open")
    69. {
    70. sqlConnection.Close();
    71. Debug.Log(sqlConnection.State);
    72. }
    73. }
    74. private Boolean SelectDB(String n)
    75. {
    76. string strSql = "select * from tb_user where username = '" + n + "';";
    77. using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
    78. {
    79. //执行ExecuteNonQuery()方法
    80. using (MySqlDataReader reader = mySqlCommand.ExecuteReader())
    81. {
    82. while (reader.Read())
    83. {
    84. usernameDB = reader.GetString(1);
    85. passwordDB = reader.GetString(2);
    86. return true;
    87. }
    88. }
    89. }
    90. return false;
    91. }
    92. public void ConnectDB()
    93. {
    94. try
    95. {
    96. sqlConnection = new MySqlConnection(strConn);
    97. sqlConnection.Open();
    98. Debug.Log(sqlConnection.State);
    99. }
    100. catch (Exception)
    101. {
    102. throw;
    103. }
    104. }
    105. public void Register()
    106. {
    107. username = inputField1.text;
    108. password = inputField2.text;
    109. //连接打开数据库
    110. ConnectDB();
    111. //查找用户名密码
    112. if (SelectDB(username) == true)
    113. {
    114. Tip.text = "用户存在";
    115. }
    116. else
    117. {
    118. if (AddDB(username, password) == 1)
    119. {
    120. Tip.text = "添加成功";
    121. }
    122. else
    123. {
    124. Tip.text = "添加失败";
    125. }
    126. }
    127. CloseDB();
    128. }
    129. private int AddDB(string n, string p)
    130. {
    131. //写sql语句
    132. string strSql = "insert into tb_user(username,password) values ('" + n + "','" + p + "')";
    133. //创建MySQL对象
    134. using (MySqlCommand mySqlCommand = new MySqlCommand(strSql, sqlConnection))
    135. {
    136. //执行ExecuteNonQuery()方法
    137. mySqlCommand.ExecuteNonQuery();
    138. }
    139. return 1;
    140. }
    141. }

    4.实验心得

    省略

  • 相关阅读:
    Spring Boot自动装配原理
    O2OA(翱途)开发平台 V8.2已发布,更安全、更高效、更开放
    前后端分离项目,vue+uni-app+php+mysql在线小说电子书阅读小程序系统 开题报告
    ETL:数据转换与集成的关键过程
    用户信息列表实现增删改查案例的实现【问题及解决过程记录】&【综合案例】
    Unity演示Leetcode开香槟过程
    电力智能运维管理平台:提升电力行业运营效率与安全
    DolphinScheduler使用系统时间
    mongoose搭建mqtt客户端
    对齐管理后台中的账户体系的四种方法
  • 原文地址:https://blog.csdn.net/CYwxh0125/article/details/134555550