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

news2025/1/12 0:59:11

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

省略

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

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

相关文章

ubuntu cutecom串口调试工具使用方法(图形界面)

文章目录 Ubuntu下使用CuteCom进行串口调试使用指南什么是CuteCom?主要特点 安装CuteCom使用APT包管理器从源码编译安装 配置串口CuteCom界面解析(启动cutecom)使用CuteCom进行数据发送和接收配置串口参数数据接收数据发送 高级功能和技巧流控…

Python---global关键字---设置全局变量

global 英 /ˈɡləʊb(ə)l/ adj. 全球的,全世界的;全面的,整体的;(计算机)全局的;球形的 需求:如果有一个数据,在函数A和函数B中都要使用,该怎么办&…

filebeat配置解析【待续】

目录 filebeat概览filebeat是如何工作的工作原理采集日志注册表发送日志 容器日志采集的三种方式方式一:Filebeat 与 应用运行在同一容器(不推荐)方式二:Filebeat 与 应用运行不在同一容器方式三:通过 Kubernetes File…

【Python百题】--1.输出Hello,world【2023.11.22】

1.问题描述 编写一个Python程序,将字符串 ‘Hello World!’ 存储在变量 str 中,然后使用 print 语句将其打印出来。 2.解决思路 使用print()函数即可 3.代码实现 print("Hello,world")4.运行结果

Java架构师软件架构开发

目录 1 基于架构的软件开发导论2 ABSD架构方法论3 ABSD方法论具体实现4 ABSD金融业案例5 基于特定领域的软件架构开发导论6 DSSA领域分析7 DSSA领域设计和实现8 DSSA国际电商平台架构案例9 架构思维方法论概述10 AT方法论和案例想学习架构师构建流程请跳转:Java架构师系统架构…

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref() v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…

闪存组织结构概念

文章目录 一、几种不同类型闪存的参数:二、组织结构三、块(Block)的结构擦除动作原理:写操作读操作 一、几种不同类型闪存的参数: 参数项SLCMLCTLCQLC读取时间/us20~2555~11075~170120~200写入时间/us50~100400~15008…

elasticsearch 7安装

问题提前报 max virtual memory areas error max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 如果您的环境是Linux,注意要做以下操作,否则es可能会启动失败 1 用编辑工具打开文件/etc/sysctl.conf 2 …

hadoop在本地创建文件,然后将文件拷贝/上传到HDFS

1.要$cd {对应目录}进入到对应目录,一般为 cd /usr/local/hadoop/ 2.创建文件,$sudo gedit {文件名},例 sudo gedit test.txt 然后在弹出的txt文件输入内容,点击右上角的保存之后,关闭即可。 3.拷贝本地文件到HDF…

【网络奇幻之旅】那年我与大数据的邂逅

🌺个人主页:Dawn黎明开始 🎀系列专栏:网络奇幻之旅 ⭐每日一句:循梦而行,向阳而生 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️ 文章目录 &#x1f4…

推荐一款适合做智慧旅游的前端模板

目录 前言 一、功能介绍 二、前端技术介绍 三、功能及界面设计介绍 1、数据概览 2、车辆监控 3、地图界面 4、其它功能 四、扩展说明 总结 前言 智慧旅游是一种全新的旅游业务模式,它充分利用先进的信息技术,提升旅游体验,优化旅游管…

蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)

大家好,我是晴天学长,非常经典实用的记忆化搜索题,当然也可以用dp做,我也会发dp的题解,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .迷宫逃脱 迷官逃脱…

安卓隐私指示器学习笔记

最近了解到Google 在Android12上新增了权限指示器,可以在信号栏的右侧显示当前访问录音机和Camera的应用,点击后可以跳转到相应应用的权限界面,消费者可以控制权限的开启和关闭。国内手机厂商最近几年都在增加隐私看板供能,消费者…

No matching variant of com.android.tools.build:gradle:7.4.2 was found.

一、报错信息 创建个新项目,运行直接报错,信息如下: No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar,…

【VRTK】【VR开发】【Unity】8-可交互对象

【概述】 之前我们只是用了一个简单方块作为可交互对象。其实可交互对象可以有许多细节设置,包括具体抓握物体的哪个点,指定抓握的方向,指定Secondary Action允许两手互换抓握,双手抓握,用两手改变物体大小等。 【拾取物体】 要让一个物体能够被拾取,必须设置它为可互…

AT89S52单片机的最小应用系统

目录 ​一.时钟电路设计 1.内部时钟方式 2.外部时钟方式 3.时钟信号的输出 二.机器周期,指令周期与指令时序 1.时钟周期 2.机器周期 3.指令周期 三.复位操作和复位电路 1.复位操作 2 复位电路设计 四.低功耗节电模式 AT89S52本身片内有8KB闪烁存储器&am…

[SIGGRAPH-23] 3D Gaussian Splatting for Real-Time Radiance Field Rendering

pdf | proj | code 本文提出一种新的3D数据表达形式3D Gaussians。每个Gaussian由以下参数组成:中心点位置、协方差矩阵、可见性、颜色。通过世界坐标系到相机坐标系,再到图像坐标系的仿射关系,可将3D Gaussian映射到相机坐标系,通…

CQ 社区版 V2.6.0 发布 | SQL闪回、权限看板、新增数据源人大金仓等

前言 HELLO,大家好,又到了 CloudQuery 社区版发版时间!本次更新版本为 v2.6.0,亮点多多,我们直入主题一起来看! 一、本期亮点 新增 3 种数据源支持 V2.6.0,新增三种国产数据源支持&#xff…

机器视觉公司为什么宁愿高薪招新人,也不愿加薪留老员工?老员工特殊时间特殊照顾,新人必须常照顾

​职场常出现的“薪酬倒挂”现象。其实这是正常的职场规律,实际上是企业管理不得不面对的一种选择。 很多企业宁愿老员工离职也不加薪,却高薪请新员工?这就是职场上的鲶鱼效应,一些高层领导认为一个企业,老员工好比沙…

【nlp】2.8 注意力机制拓展

注意力机制拓展 1 注意力机制原理1.1 注意力机制示意图1.2 Attention计算过程1.3 Attention计算逻辑1.4 有无attention模型对比1.4.1 无attention机制的模型1.4.2 有attention机制的模型1 注意力机制原理 1.1 注意力机制示意图 Attention机制的工作原理并不复杂,我们可以用下…