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 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.实验心得

省略

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式锁之基于redis实现分布式锁(二)

2. 基于redis实现分布式锁 2.1. 基本实现 借助于redis中的命令setnx(key, value),key不存在就新增,存在就什么都不做。同时有多个客户端发送setnx命令,只有一个客户端可以成功,返回1(true);其他…

在线视频课程教育系统源码/网课网校/知识付费/在线教育系统/在线课程培训系统源码

源码简介: 在线视频课程教育系统源码,作为网课/网校/知识付费/在线教育系统,它有文章付费阅读在线点播自动发货付费阅读VIP会员系统等功能。它是实用的在线课程培训系统源码。 发货100-在线视频课程教育系统,它是一款功能实用的…

PC8250(CC-CV控制)5V/8A同步降压恒流恒压软启动带EN功能只需极少外围元件

概述 PC8250是一个同步降压转换器输出电流至8A。它的设计允许操作电源电压范围从9V到42V。外部关闭功能可以通过逻辑电平来控制COMP/EN引脚下降,然后进入待机模式。外部补偿使反馈控制具有良好的线路和负载调节,外部设计灵活。PC8250在CC(恒定…

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

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

基于Pytorch框架多人多摄像头摔倒跌倒坠落检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在计算机视觉领域的应用已经取得了显著的进展,特别是在多人多摄像头场景下的摔倒跌倒检测。通过…

OpenSearch开发环境安装Docker和Docker-Compose两种方式

文章目录 简介常用请求创建映射写入数据查询数据其他 安装Docker方式安装OpenSearch安装OpenSearchDashboard Docker-Compose方式Docker-Compose安装1.设置主机环境2.下载docker-compose.yml文件3.启动docker-compose4.验证 问题问题1:IPv4 forwarding is disabled.…

给数据库查询结果添加一个额外的自增编号

1、在mysql数据库可以执行的sql SELECT( i : i 1 ) num,M.* FROMuser M,( SELECT i : 0 ) AS ID GROUP BYM.ID ORDER BYM.create_time SELECT (i :i 1) 是为了生成自增的序列号字段 SELECT i : 0 是为了将i进行初始化每次查询的序列号都会从1开始进行排序生成序列号 在…

docker部署paddleocr

内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 环境 1. CentOS7  2. docker  3. PaddleOCR2.5.2 1.准备 1. 首先准备好需要打包的项目 2. 在该项目中创建Dockerfile文件 touch Dockerfile2. 编写Dockerfile # 从Python 3.8的官方镜像中创建(pyt…

快速排序演示和代码介绍

快速排序的核心是(以升序为例):在待排序的数据中指定一个数做为基准数,把所有小于基准数的数据放到基准数的左边,所有大于基准数的数据放在右边,这样的话基准数的位置就确定了,然后在两边的数据中重复上述操作

5G智慧工地整体解决方案:文件全文115页,附下载

关键词:5G智慧工地,智慧工地建设方案,智慧工地管理平台系统,智慧工地建设调研报告,智慧工地云平台建设 一、5G智慧工地建设背景 5G智慧工地是利用5G技术、物联网、大数据、云计算、AI等信息技术,围绕“人…

SANSAN新鲜事|理清!如何降低数字工厂建设成本

根据调研结果,在中国,只有10%的企业已经完全实施数字化工厂解决方案或目前处于最后阶段。工厂数字化的进展比企业的预期要慢得多,原因包括复杂的系统环境和多样化的机器版图,以及在整个生产网络中推广单个解决方案的相关挑战。实施…

深度学习之基于Tensorflow卷积神经网络鸟类目标识别检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络(Convolutional Neural Networks,CNN)在鸟类目标识…

景区智慧旅游智能化系统方案:PPT全文58页,附下载

关键词:智慧景区解决方案,智慧文旅解决方案,智慧旅游解决方案,智慧文旅综合运营平台 一、景区智慧旅游智能化系统建设背景 近年来,随着信息技术的快速发展和普及,以及旅游市场的不断扩大和升级&#xff0…

Me-and-My-Girlfriend-1

Me-and-My-Girlfriend-1 一、主机发现和端口扫描 主机发现,靶机地址192.168.80.147 arp-scan -l端口扫描,开放了22、80端口 nmap -A -p- -sV 192.168.80.147二、信息收集 访问80端口 路径扫描 dirsearch -u "http://192.168.80.147/" -e * …

用好说 AI 玩转奥特曼表情包,居然还能和他们聊个天

你喜欢奥特曼吗?你相信光吗? 如果你已经追完了特摄剧、刷完了大电影、用滥了那几个表情包,那不如来试试用 AI 给自己整点活儿新 “物料”。 不管是和奥特曼 “面对面” 聊天还是 “无中生有” 表情包,AI 都能做! (※…

重磅!2023两院外籍院士增选名单公布

根据《中国科学院院士章程》《中国科学院外籍院士选举办法》等规定,2023年中国科学院选举产生了30名中国科学院外籍院士。 现予公布。 中国科学院 2023年11月23日 中国工程院2023年外籍院士增选共选举产生16位中国工程院外籍院士。 现予公布。 中国工程院 2023年…

Pyqt5实现多线程程序

主从架构 Pyqt常常使用**主从架构(Master-Workers 架构)**来避免界面卡死的情况。 Master-Workers 架构就像它的名字,一个master统领着几个workers一起干活。其中某个worker倒下了不会导致整体任务失败。matser不用干活,因此可以…

UltraCompare 23 for Mac文件对比工具

UltraCompare是一款功能强大的文件比较和合并工具, 以下是它的特色介绍: 多种文件格式支持:UltraCompare支持比较和合并多种文件格式,包括文本文件、二进制文件、office文档、PDF文件等。 文件差异高亮显示:UltraComp…

动态规划求二维网格中从左上角到右下角的最短路径( 每次只能向下、向右、向右下走 ) java 实现

dp[i][j] 表示在以点(0,0)作为左上角,点(i,i) 作为右下角的二维网格中 左上角到右下角的最短路径, 动态转移方程为:dp[i][j] min{ dp[i][j-1],dp[i-1][j],dp[i-1][j-1] }.distance weight[i][j] ImageUtils.java: import java.a…

凸问题与非凸问题

凸函数:曲线上任意两点连线上的点对应的函数值不大于该两点对应的函数值得连线上的值,例如yx^2; 非凸函数:曲线上任意两点连线上的点对应的函数值既有大于该两点对应的函数值得连线上的值的部分也有小于的部分,例如&am…