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.pswp.cn/news/161365.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161365.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161365.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式—單一職責原則

1.背景 單一職責原則(SRP:Single responsibility principle)又稱單一功能原則,面向對象五個基本原則(SOLID)之一。它規定一個類應該只有一個發生變化的原因。該原則由羅伯特C馬丁(Robert C. Ma…

生成式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 語言設計開發,不僅擁有簡單易用、靈活擴展的特性,還具備更…

ElasticSearch之Health API

查看當前集群全部健康指標的信息,執行如下命令: curl -X GET "https://localhost:9200/_health_report?pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"執行結果輸出如下: {&quo…

Niushop 開源商城 v5.1.7:支持PC、手機、小程序和APP多端電商的源碼

Niushop 系統是一款基于 ThinkPHP6 開發的電商系統,提供了豐富的功能和完善的商品機制。該系統支持普通商品和虛擬商品,并且針對虛擬商品還提供了完善的核銷機制。同時,它也支持新時代的商業模式,如拼團、分銷和多門店砍價等營銷活…

Platform Issues 平臺問題

Set processing does not behave the same on every database platform. On some platforms, set processing can encounter performance breakdowns. Some platforms do not optimize update statements that include subqueries. 集處理在每個數據庫平臺上的行為并不相同。在…

Log4j

通過Log4j,我們可以控制日志信息輸送到目的地是控制臺、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器。我們可以控制每一條日志的輸出格式。通過定義每一條日志信息的級別,能更加細致地控制日志的生成過程。 1 log4j、log4j2與SLF4J …

【Vue3從入門到項目實現】前置知識及Vue基礎

概念 理論基礎 MVC 架構(以JavaWeb舉例) M :Model,(pojo、service、dao等)V :View,(JSP, HTML等)C:Controller (servlet) MVVC 架構&#xff…

C/C++ 使用API實現數據壓縮與解壓縮

在Windows編程中,經常會遇到需要對數據進行壓縮和解壓縮的情況,數據壓縮是一種常見的優化手段,能夠減小數據的存儲空間并提高傳輸效率。Windows提供了這些API函數,本文將深入探討使用Windows API進行數據壓縮與解壓縮的過程&#…

【Rust日報】2023-11-21 如何將 Rust 的編譯效率提高 75%

這是一篇來自 https://benw.is/posts/how-i-improved-my-rust-compile-times-by-seventy-five-percent 的總結和翻譯,我去掉了一些不太重要的章節,保留了所有關鍵技術點。 Rust經常被提到的一個痛點是編譯時間較慢。為了享受借用檢查器、安全性和零成本抽…

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項目的腳手架庫…