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.mzph.cn/news/161365.shtml

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

相关文章

生成式AI与大语言模型,东软已经准备就绪

伴随着ChatGPT的火爆全球,数以百计的大语言模型也争先恐后地加入了这一战局,掀起了一场轰轰烈烈的“百模大战”。毋庸置疑的是,继方兴未艾的人工智能普及大潮之后,生成式AI与大语言模型正在全球开启新一轮生产力革新的科技浪潮。 …

【C语言】深入理解指针(四)

🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…

帝国cms开发一个泛知识类的小程序的历程记录

#帝国cms小程序# 要开发一个泛知识类的小程序,要解决以下几个问题。 1。知识内容的分类。 2。知识内容的内容展示。 3。知识内容的价格设置。 4。用户体系,为简化用户的操作,在用户进行下载的时候,请用户输入手机号&#xff…

【HarmonyOS】API6上JS实现视频播放全屏播放时,会回到之前界面

【关键字】 API6 / 视频播放 / 全屏播放异常 【问题现象】 开发者在API6上用JS实现视频播放器点全屏播放后,不是全屏效果,实际效果是变成了横屏并返回到首页。 具体代码实现是参考video媒体组件指南。 【问题分析】 JS实现视频播放器有Codelab代码示…

DedeBIZ 管理系统 DedeV6 v6.2.6 社区版 免费授权版

DedeBIZ 系统:开源、安全、高效的 DedeV6 v6.2.6 社区版 DedeBIZ 系统是基于 PHP 7 版本开发的,具有强大的可扩展性,并且完全开放源代码。它采用现流行的 Go 语言设计开发,不仅拥有简单易用、灵活扩展的特性,还具备更…

Niushop 开源商城 v5.1.7:支持PC、手机、小程序和APP多端电商的源码

Niushop 系统是一款基于 ThinkPHP6 开发的电商系统,提供了丰富的功能和完善的商品机制。该系统支持普通商品和虚拟商品,并且针对虚拟商品还提供了完善的核销机制。同时,它也支持新时代的商业模式,如拼团、分销和多门店砍价等营销活…

Log4j

通过Log4j,我们可以控制日志信息输送到目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器。我们可以控制每一条日志的输出格式。通过定义每一条日志信息的级别,能更加细致地控制日志的生成过程。 1 log4j、log4j2与SLF4J …

pikachu靶场Table pikachu.member doesn’t exist:解决

背景: 第一次搭建pikachu靶场,搭建好后访问index.php后,尝试练习,发现界面显示Table pikachu.member doesn t exist,后来找了很多教程,没有解决,后来发现是自己没有进行初始化,给大家…

VMware 系列:ESXI6.7升级7.0

ESXI6.7升级7.0 一、下载补丁二、上传文件三 启用Shell四、登录Shell后台五、删除不兼容驱动六、正常升级最近,将一台使用ESXI6.7的虚拟机升级到了7.0版本,下面记录一下自己的升级过程。 升级条件 首先确保硬件是否能升级到7.0版本,物理网卡驱动为e1000e不能升级,如果是ig…

不到十个例题带你拿下c++双指针算法(leetcode)

移动零问题 https://leetcode.cn/problems/move-zeroes/submissions/ 1.题目解析 必须在原数组进行修改,不可以新建一个数组 非零元素相对顺序不变 2.算法原理 【数组划分】【数组分块】 这一类题会给我们一个数组,让我们划分区间,比如…

【机器学习】Nonlinear Independent Component Analysis - Aapo Hyvärinen

Linear independent component analysis (ICA) x i ( k ) ∑ j 1 n a i j s j ( k ) for all i 1 … n , k 1 … K ( ) x_i(k) \sum_{j1}^{n} a_{ij}s_j(k) \quad \text{for all } i 1 \ldots n, k 1 \ldots K \tag{} xi​(k)j1∑n​aij​sj​(k)for all i1…n,k1…K()…

VUE语法-$refs和ref属性的使用

1、$refs和ref属性的使用 1、$refs:一个包含 DOM 元素和组件实例的对象,通过模板引用注册。 2、ref实际上获取元素的DOM节点 3、如果需要在Vue中操作DOM我们可以通过ref和$refs这两个来实现 总结:$refs可以获取被ref属性修饰的元素的相关信息。 1.1、$refs和re…

PS_魔幻

首先打开一个背景图片 然后ctrl j复制一层背景 在调整中将图片改成黑白颜色 点击调整中的 色相/饱和度 调整明度 点击画笔工具,并且设置画笔模板 调节画笔大小,将笔记本电脑涂个概况 然后再新建色相/饱和度 勾选着色 调节背景颜色至喜欢 右键混合选项 …

04-React脚手架 集成Axios

初始化React脚手架 前期准备 1.脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 1.包含了所有需要的配置(语法检查、jsx编译、devServer…)2.下载好了所有相关的依赖3.可以直接运行一个简单效果 2.react提供了一个用于创建react项目的脚手架库…

一键去水印免费网站快速无痕处理图片、视频水印

水印问题往往是一个大麻烦。即使我们只想将这些照片保留在我们的个人相册中以供怀旧,水印也可能像顽固的符号一样刺激我们的眼睛。为了解决这个问题,我们需要不断探索创新的解决方案,让我们深入研究一款强大的一键去水印免费网站“水印云”。…

Rust并发编程:理解线程与并发

大家好!我是lincyang。 今天我们来深入探讨Rust中的并发编程,特别是线程的使用和并发的基本概念。 Rust中的线程 Rust使用线程来实现并发。线程是操作系统可以同时运行的最小指令集。在Rust中,创建线程非常简单,但与此同时&…

二叉搜索树java实现

顾名思义,二叉搜索树是一棵二叉树,每个节点就是一个对象,这个对象包含属性left、right和parent。left指向节点的左孩子,right指向节点的右孩子,parent指向节点的父节点(双亲)。如果某个孩子节点…

黑马点评笔记 redis实现缓存

文章目录 什么是缓存?为什么要使用缓存 如何使用缓存功能实现缓存模型和思路代码实现 缓存更新策略数据库缓存不一致解决方案代码实现 什么是缓存? 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码(例如: 例1:Static fi…

vr小鼠虚拟解剖实验教学平台减少了受感染风险

家畜解剖实验教学是培养畜牧兽医专业学生实际操作能力的专业教学活动中的核心手段。采取新型教学方式与手段,合理设置实验教学内容,有助于激发学生的操作积极性,促进实践教学的改革。 家畜解剖VR仿真教学是一种借助VR虚拟现实制作和web3d开发…

常用通信接口、协议:SCCB

一、概述 SCCB(串行摄像头控制总线)是由欧姆尼图像技术公司(OmniVision)开发的一种类IIC的总线,主要用于其OV系列的图像传感器上(但目前有很多家的图像传感器都有采用该控制总线)。相对于IIC总线来说SCCB与之最主要的差…