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

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

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

/*实现登录注册功能
登录:获取输入框中的字符串--->连接并打开数据库--->查找用户名密码
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.实验心得

省略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/208895.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入了解批处理文件:从基础到实例

1. 什么是批处理文件? 批处理文件是一种包含一系列命令的文本文件,通常用于自动化执行一系列任务。在不同操作系统中,批处理也有不同的名称,如在Windows中被称为批处理文件(.bat),而在Linux中则…

PTA-输出三角形面积和周长

本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:areas(s−a)(s−b)(s−c)​,其中s(abc)/2。 输入格式&…

Day38力扣打卡

打卡记录 网格中的最小路径代价(动态规划) 链接 class Solution:def minPathCost(self, grid: List[List[int]], moveCost: List[List[int]]) -> int:m, n len(grid), len(grid[0])f [[0x3f3f3f3f3f] * n for _ in range(m)]f[0] grid[0]for i i…

8-cgi fastcgi wsgi uwsgi uWSGI 分别是什么?如何自定制上下文管理器、Python是值传递还是引用传递

1 cgi fastcgi wsgi uwsgi uWSGI 分别是什么? 2 如何自定制上下文管理器 3 Python是值传递还是引用传递 1 cgi fastcgi wsgi uwsgi uWSGI 分别是什么? # CGI:通用网关接口(Common Gateway Interface/CGI),CGI描述了服务器&#xf…

iperf3 网络测试

iperf3 测试网络的上下行带宽 下载地址 https://iperf.fr/iperf-download.php 开启服务器 开启客户端 常用命令 -c 代表客户端-s 代表服务端-u 代表 udp-r 代表数据方向是否反向 https://baijiahao.baidu.com/s?id1731514357681464971&wfrspider&forpc

智能驾驶产品开发中如何贯彻“正向开发”理念

摘要: 基于演绎法的正向开发理念,能够让智能驾驶产品在充分满足用户需求,保证产品质量的同时,确保开发目标合理且得到落实。 前段时间,微博CEO吐槽理想L9智能驾驶“行驶轨迹不居中”,在网上引发了热烈讨论…

二级指针

*代表指针变量。int*为p的类型。故pp第一个*表示pp为指针int** pp,指向p的二级指针。 p中储存a的地址,pp中储存p的地址。 打印,printf中**pp的表示:pp中储存的是p的地址,第一个*解引用地址p表示p的内容,p的…

微服务学习|初识Docker、使用Docker、自定义镜像、DockerCompose、Docker镜像仓库

初识Docker 项目部署的问题 大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题 依赖关系复杂,容易出现兼容性问题 开发、测试、生产环境有差异 Docker如何解决依赖的兼容问题的? 将应用的Libs (函数库)、Deps (依赖)配置与应用…

读像火箭科学家一样思考笔记06_初学者之心

1. 专业化是目前流行的趋势 1.1. 通才(generalist)是指博而不精之人 1.2. 懂得的手艺越多,反而会家徒四壁 1.2.1. 希腊谚语 1.3. 这种态度代价很大,它阻断了不同学科思想的交融 2. 组合游戏 2.1. 某个行业的变革可能始于另一…

【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 2

1、兰兰有一些数字卡片,从 1 到 100 的数字都有,她拿出几张数字卡片按照一定顺序摆放。想一想,第 5 张卡片应该是 A、11 B、12 C、13 D、14 答案:C 2、按照下图的规律,阴影部分应该填 A、 B、 C、 D、 答案&am…

WPF树形控件TreeView使用介绍

WPF 中的 TreeView 控件用于显示层次结构数据。它是由可展开和可折叠的 TreeViewItem 节点组成的&#xff0c;这些节点可以无限嵌套以表示数据的层次。 TreeView 基本用法 例如实现下图的效果&#xff1a; xaml代码如下&#xff1a; <Window x:Class"TreeView01.Mai…

链表OJ--上

文章目录 前言一、反转链表二、移除链表元素三、链表中倒数第K个结点四、相交链表五、链表的中间结点 前言 一、反转链表 力扣206&#xff1a;反转链表- - -点击此处传送 思路图&#xff1a; 方法一&#xff1a;改变指向 方法二&#xff1a; 代码&#xff1a; //方法一 /…