Unity學(xué)習(xí)參考文檔和開發(fā)工具
? unity的官網(wǎng)文檔:https://docs.unity3d.com/cn/current/Manual/ScriptingSection.html
■ 學(xué)習(xí)方式:
首先了解unity相關(guān)概述,快速認(rèn)識unity編輯器,然后抓住重點(diǎn)的學(xué):游戲?qū)ο?、組件|C#腳本、預(yù)制體、UI
? 學(xué)習(xí)過程你會發(fā)現(xiàn),其實(shí)Unity中主要是用c#進(jìn)行開發(fā)。
因?yàn)樵谶@個(gè)過程中,無非就是,對游戲?qū)ο笸ㄟ^掛載的C#腳本,修改一下組件的一些屬性,控制一下激活之類的操作。到了UGUI,同樣,也是通過掛載的C#腳本,監(jiān)聽到事件發(fā)生后,調(diào)用一下C#腳本定義的方法處理一下事件。
- unity快速上手文檔:https://learn.unity.com/tutorial/she-zhi-3d-beginner?uv=2020.3&projectId=5dfa9a5dedbc2a26d1077ca8
- 視頻[這種動手類的快速上手,建議跟著視頻動手操作一番]:https://www.bilibili.com/video/BV1gQ4y1e7SS/
- ★重點(diǎn)學(xué)習(xí)內(nèi)容:游戲?qū)ο?、組件|C#腳本、預(yù)制體、UI[GUI]
■ 開發(fā)工具:
unity、visual studio
1、Unity 概述
(1) 什么是Unity
Unity是一套具有完善體系與編輯器的跨平臺游戲開發(fā)工具,也可以稱之為游戲引擎游戲引擎是指一些編寫好的可重復(fù)利用的代碼與開發(fā)游戲所用的各功能編輯器Unity目前已超過50%的游戲引擎市場占有率。
游戲引擎=可復(fù)用代碼+各種開發(fā)工具
(2) Unity引擎優(yōu)勢
1.基于C#編程,擁有易上手、高安全性的特性
2.獨(dú)特的面向組件游戲開發(fā)思想讓游戲開發(fā)更加簡單易復(fù)用
3.擁有十分成熟的所見即所得開發(fā)編輯器
4.擁有良好生態(tài)圈,商城中包含大量成熟的功能腳本與資源
5.強(qiáng)大的跨平臺特性,可以制作PC、主機(jī)、手機(jī)、AR、VR等多平臺游戲
2、Unity Hub
管理Unity項(xiàng)目,當(dāng)電腦中有多個(gè)unity不同版本的項(xiàng)目的時(shí)候,管理就比較麻煩,可以通過unity hub 對各個(gè)不同的unity hub項(xiàng)目管理。
3、認(rèn)識unity編輯器
(1) unity恢復(fù)默認(rèn)窗口: Windows-> Layouts-> Default
(2) 項(xiàng)目設(shè)置
- 包括:物理、聲音、質(zhì)量、編輯器設(shè)置等等
(3) 全局設(shè)置
- 編輯器的常用設(shè)置
- 擴(kuò)展工具,設(shè)置一下腳本使用visual studio 打開
(4) unity菜單欄介紹
■ 文件 File:文件的常規(guī)操作[項(xiàng)目/場景創(chuàng)建、保存等,還有打包項(xiàng)目]
■ 編輯 Edit:復(fù)制、剪切、粘貼等操作
■ 資源 Assets:創(chuàng)建[腳本、場景、動畫等等]、導(dǎo)入導(dǎo)出等等
■ 游戲?qū)ο?GameObject:會在游戲場景中真正顯示出來
■ 組件 Component:非常重要,因?yàn)閡nity是面向組件的
- 組件和游戲?qū)ο笫遣豢煞指舻年P(guān)系,一個(gè)游戲?qū)ο笊砩峡梢話於鄠€(gè)組件
■ 2d 和 3d 場景的切換:
- 點(diǎn)一下2D,就變成了3D場景
(5) unity 項(xiàng)目的運(yùn)行,是運(yùn)行的是整個(gè)場景,而非單個(gè)的游戲?qū)ο?/h3>
- 運(yùn)行的單位是場景!
4、對游戲?qū)ο蟮某R姴僮?/h2>
(0) transform 屬性相關(guān)的操作的工具欄
(1) 拉伸
- 重置為000
(2) 隱藏或顯示圖層中的游戲?qū)ο?/h3>
(3) 看到游戲?qū)ο蟮木W(wǎng)格形狀
- 為了方便觀察,一般選擇 Shaded Wireframe
(4) 選擇游戲?qū)ο螅褐苯邮髽?biāo)點(diǎn)擊一下即可
(5) 右鍵-眼睛環(huán)繞
(6) 手的模式下,結(jié)合鼠標(biāo)滾輪,可以進(jìn)行拖拽,調(diào)遠(yuǎn)調(diào)近觀察
-
進(jìn)入手的模式,快捷方式,直接按住鼠標(biāo)滾輪
-
和右鍵-眼睛環(huán)繞一樣,都是為了更好地全面觀察游戲?qū)ο?/p>
(7) 父子游戲?qū)ο?,父游戲?qū)ο蟮淖鴺?biāo)改變會一起改變子游戲?qū)ο蟮淖鴺?biāo)
- 一個(gè)游戲?qū)ο螅瑒?chuàng)建后的默認(rèn)坐標(biāo)位置 position,默認(rèn)是相對于世界坐標(biāo)的位置,簡稱為世界坐標(biāo)位置
- 如果一個(gè)游戲?qū)ο螅兂闪肆硗庖粋€(gè)游戲?qū)ο蟮淖佑螒驅(qū)ο?,那么它的坐?biāo)就是相對位置-【相對于父游戲?qū)ο蟮奈恢谩?,簡稱相對位置
- 最外層的游戲?qū)ο?/li>
- 對于父子游戲?qū)ο蟮淖鴺?biāo)軸位置,父坐標(biāo)軸位置默認(rèn)在父子游戲?qū)ο蟮闹虚g:
- 可以設(shè)置一下為軸心,父坐標(biāo)位置即可回到父游戲?qū)ο笊砩?/li>
- 坐標(biāo)軸,全局是針對世界坐標(biāo)
(8) unity 打包操作
-
在unity 中將圖片、模型文件[后綴是.fbx]等素材進(jìn)行打包
-
打包完的文件類型是 Unity package file
(9) 標(biāo)簽和圖層
- 標(biāo)簽:一般是咱自己用于在代碼中,判斷游戲?qū)ο笫欠袷窃巯胍挠螒驅(qū)ο?/li>
- 圖層:是unity做的一種歸類劃分,歸類之后,可以給攝像機(jī)等做過濾顯示;比如攝像機(jī)對于這個(gè)圖層的是不顯示的,還有對于碰撞,這個(gè)圖層可以不去碰撞等等。
(3) 看到游戲?qū)ο蟮木W(wǎng)格形狀
- 為了方便觀察,一般選擇 Shaded Wireframe
(4) 選擇游戲?qū)ο螅褐苯邮髽?biāo)點(diǎn)擊一下即可
(5) 右鍵-眼睛環(huán)繞
(6) 手的模式下,結(jié)合鼠標(biāo)滾輪,可以進(jìn)行拖拽,調(diào)遠(yuǎn)調(diào)近觀察
-
進(jìn)入手的模式,快捷方式,直接按住鼠標(biāo)滾輪
-
和右鍵-眼睛環(huán)繞一樣,都是為了更好地全面觀察游戲?qū)ο?/p>
(7) 父子游戲?qū)ο?,父游戲?qū)ο蟮淖鴺?biāo)改變會一起改變子游戲?qū)ο蟮淖鴺?biāo)
- 一個(gè)游戲?qū)ο螅瑒?chuàng)建后的默認(rèn)坐標(biāo)位置 position,默認(rèn)是相對于世界坐標(biāo)的位置,簡稱為世界坐標(biāo)位置
- 如果一個(gè)游戲?qū)ο螅兂闪肆硗庖粋€(gè)游戲?qū)ο蟮淖佑螒驅(qū)ο?,那么它的坐?biāo)就是相對位置-【相對于父游戲?qū)ο蟮奈恢谩?,簡稱相對位置
- 最外層的游戲?qū)ο?/li>
- 對于父子游戲?qū)ο蟮淖鴺?biāo)軸位置,父坐標(biāo)軸位置默認(rèn)在父子游戲?qū)ο蟮闹虚g:
- 可以設(shè)置一下為軸心,父坐標(biāo)位置即可回到父游戲?qū)ο笊砩?/li>
- 坐標(biāo)軸,全局是針對世界坐標(biāo)
(8) unity 打包操作
-
在unity 中將圖片、模型文件[后綴是.fbx]等素材進(jìn)行打包
-
打包完的文件類型是 Unity package file
(9) 標(biāo)簽和圖層
- 標(biāo)簽:一般是咱自己用于在代碼中,判斷游戲?qū)ο笫欠袷窃巯胍挠螒驅(qū)ο?/li>
- 圖層:是unity做的一種歸類劃分,歸類之后,可以給攝像機(jī)等做過濾顯示;比如攝像機(jī)對于這個(gè)圖層的是不顯示的,還有對于碰撞,這個(gè)圖層可以不去碰撞等等。
5、組件
(1) 什么是組件
組件就是功能,需要給游戲?qū)ο筇砑邮裁垂δ芫椭恍杞o它添加上組件。
在Unity中,游戲物體是不具備任何功能的,如果想要為其添加功能,那么就需要為它添加該功能的組件,而每一個(gè)組件其實(shí)就是一個(gè)引擎內(nèi)部的組件腳本
或是由自己編寫的組件腳本
。也就是說,一個(gè)游戲物體(GameObject)會包含多個(gè)組件(Component),每一個(gè)組件又是一個(gè)組件腳本。
- 比如:給游戲?qū)ο筇砑由现亓M件,該游戲?qū)ο缶蜁碌簟?/li>
- 又比如:transform 也是一個(gè)組件。
- 又比如:燈光之所以是燈光,那是因?yàn)樗葎e人多了一個(gè)燈光的組件。游戲?qū)ο笃鋵?shí)都是默認(rèn)自帶了一些組件,比如立方體自帶上了立方體的組件,球自帶上了球的組件。
- 一個(gè)游戲?qū)ο?圖層外層)對應(yīng)一個(gè)腳本,當(dāng)需要的功能[組件]不存在的時(shí)候,需要自己手動編寫腳本!
(2) 手動編寫C#腳本
- 在項(xiàng)目中手動添加上C#腳本
- 添加上腳本
每個(gè)游戲?qū)ο笾员憩F(xiàn)形式不同,是因?yàn)榻壎ǖ剿麄兩砩系慕M件腳本不同!
(3) 組件的生命周期
- 從 Awake 到 OnDestroy:
- Awake 之后就是激活OnEnale,然后是開始Start
- 改變:按幀改變Update-LateUpdate,按固定時(shí)間頻率改變FixedUpdate
- 取消激活OnDisable:和激活OnEnable是一對
- 最后如果刪除了組件,則會執(zhí)行銷毀OnDestroy
? 激活OnEnale和取消激活OnDisable:
■ 腳本的生命周期的執(zhí)行順序
-
如果有多個(gè)腳本,test1.cs、test2.cs、test3.cs
-
腳本的執(zhí)行順序是:會想把test1.cs、test2.cs、test3.cs 的所有Awake方法執(zhí)行完[如果有手動寫Awake方法的情況!],接著是從test1.cs到test2.cs最后到test3.cs 執(zhí)行下一個(gè)生命周期-激活OnEanale[如果有手動寫OnEanale方法的情況!],然后又是從從test1.cs到test2.cs最后到test3.cs 執(zhí)行下一個(gè)生命周期Start......
? 現(xiàn)階段的生命周期從Awake開始,每次都是從項(xiàng)目中第一個(gè)腳本到最后一個(gè)腳本,執(zhí)行。
? 接著進(jìn)入下一個(gè)生命周期,所有的腳本也是從項(xiàng)目中第一個(gè)腳本到最后一個(gè)腳本,執(zhí)行當(dāng)前的生命周期!
-
如果想要更改項(xiàng)目中腳本之間的生命周期的執(zhí)行順序,可以在編輯->項(xiàng)目設(shè)置->腳本執(zhí)行順序設(shè)置一下
- 順序添加錯(cuò)了,直接拖拽更改即可
6、預(yù)制體和變體
(1) 什么事預(yù)制體
其實(shí),就是把場景中做好的東西[獨(dú)立的游戲?qū)ο骫封裝成預(yù)制體[生成一個(gè)文件]。
- 預(yù)制體的后綴是 .prefab
(2) 預(yù)制體好處:
(3) 預(yù)制體和場景的游戲?qū)ο蟮膮^(qū)別:
① 直接修改預(yù)制體,則場景中的游戲?qū)ο髸桨l(fā)生改變。但是如果只直接修改了場景中的游戲?qū)ο?,預(yù)制體不變。
- 包括了直接在預(yù)制體身上掛著組件,場景中的游戲?qū)ο髸綊燧d。
② 想要實(shí)現(xiàn)修改場景中的游戲?qū)ο?,預(yù)制體同步發(fā)生改變:
- 選擇“打開”模式
③ 場景中的游戲?qū)ο螅瑨燧d了組件,想要同步掛載到預(yù)制體身上:
- 單個(gè)掛載:
- 批量掛載:override批量應(yīng)用到預(yù)制體
(4) 通過場景中的游戲?qū)ο螅焖龠x中預(yù)制體
(5) 變體
預(yù)制件變體:對當(dāng)前的游戲?qū)ο?,生成一個(gè)變體,變體會依賴舊的預(yù)制體。
當(dāng)舊的預(yù)制體發(fā)生改變,變體也會跟著一起改變。但是變體改變,預(yù)制體不會發(fā)生改變。
7、動態(tài)修改游戲?qū)ο蟮膶傩?/h2>
(1) 游戲?qū)ο蠛退鶔燧d的C#腳本之間的關(guān)系:
(2) C#腳本的類中添加了一個(gè)屬性對象,將該屬性對象和Unity的游戲?qū)ο筮M(jìn)行關(guān)聯(lián)
(3) 通過預(yù)制體,在場景中實(shí)例化出游戲?qū)ο?/h3>
- 結(jié)果1:
- 結(jié)果2:
■ EmptyTest.cs 內(nèi)容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/**
* EmptyTest 類是綁定在場景SamepleScene下的游戲?qū)ο驟mpty身上
* 補(bǔ)充,課外小知識,C#的 Debug.Log 方法,其實(shí)就是相當(dāng)于 前端項(xiàng)目的 console.log 方法,也就是開發(fā)過程中用于打印日志的
*/
public class EmptyTest : MonoBehaviour
{
public GameObject Cube;
//預(yù)制體
public GameObject Prefab;
// Start is called before the first frame update
void Start()
{
//當(dāng)前類的屬性gameObejct就對應(yīng)了unity當(dāng)前腳本所綁定的游戲?qū)ο? GameObject gameObject = this.gameObject;
Debug.Log("gameObject: " + gameObject);
Debug.Log("gameObject的名稱:" + gameObject.name);
Debug.Log("gameObject的標(biāo)簽:" + gameObject.tag);
Debug.Log("gameObject的圖層:" + gameObject.layer);
Debug.Log("Empty下的Cude的name:" + Cube.name);//子物體的名稱
Debug.Log("Empty下的Cude的繼承的父類的激活狀態(tài):" + Cube.activeInHierarchy);//子物體繼承關(guān)系的激活狀態(tài)【看所繼承的父物體的激活狀態(tài)】
Debug.Log("Empty下的Cude的自身的激活狀態(tài):" + Cube.activeSelf);//子物體自身的激活狀態(tài)
Debug.Log("Empty的transform:" + transform.position);//位置
Debug.Log("Empty下的Cude的transform:" + transform.Find(Cube.name).position);//位置
//給游戲?qū)ο筇砑由辖M件,通過拿到游戲?qū)ο?AddComponent方法
gameObject.AddComponent<MeshFilter>();
Cube.AddComponent<AudioSource>();
//獲取其他組件【這個(gè)其他組件,其實(shí)就是排除掉Transform這個(gè)必須的組件后的其他組件】
Debug.Log("Empty獲取其他組件:" + GetComponent<BoxCollider>());
Debug.Log("Cube獲取其他組件:" + Cube.GetComponent<BoxCollider>());
//從子物體身上獲取組件
// GetComponentInChildren<BoxCollider>();
//從父物體身上獲取組件
//GetComponentInParent<BoxCollider>();
//全局查找--細(xì)節(jié),就是首字母大寫了,小寫的是屬性
//所謂的全局查找,其實(shí)就是對當(dāng)前的C#腳本所處的場景SamepleScene下進(jìn)行全局查找
GameObject testGameObject = GameObject.Find("TestGameObject");
//還可以通過標(biāo)簽名獲取到游戲?qū)ο? GameObject testGameObejct2 = GameObject.FindWithTag("enemy");
Debug.Log("testGameObject:" + testGameObject);
Debug.Log("testGameObject2:" + testGameObejct2);
//還可以設(shè)置游戲?qū)ο笫欠窦せ? testGameObject.SetActive(false);//取消激活
//需求:通過預(yù)制體,在場景中實(shí)例化出游戲?qū)ο? //預(yù)制體的類型也是GameObject
// Instantiate(Prefab);
// 實(shí)例化出游戲?qū)ο?,并且是?dāng)前掛載了C#腳本的游戲?qū)ο蟮淖游矬w
GameObject capsule = Instantiate(Prefab, transform);
// 銷毀游戲?qū)ο? Destroy(capsule);
}
// Update is called once per frame
void Update()
{
}
}
8、Application 讀寫文件需要用到的類
(1) Application 讀寫文件
(2) Application 還有控制權(quán)限的作用,比如控制游戲后臺運(yùn)行,打開鏈接,退出游戲
9、游戲場景
■ 核心類-場景管理類 SceneManager:和場景的創(chuàng)建、場景切換|加載、場景的獲取、場景數(shù)量、場景卸載有關(guān)
■ 關(guān)于場景的常用屬性:場景名稱、場景是否已加載、場景路徑、場景索引、場景中獨(dú)立的游戲?qū)ο?/h3>
■ 異步加載場景并獲取進(jìn)度
- 通過協(xié)程的方式[協(xié)程,其實(shí)就是協(xié)助類型的多線程] StartCoroutine(任務(wù));
- 在Update中獲取到進(jìn)度,因?yàn)閁pdate是輸出每一幀的改變
? 通過計(jì)時(shí)器控制場景跳轉(zhuǎn):
- 結(jié)果1:
- 結(jié)果2:
■ EmptyTest.cs 內(nèi)容如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/**
* EmptyTest 類是綁定在場景SamepleScene下的游戲?qū)ο驟mpty身上
* 補(bǔ)充,課外小知識,C#的 Debug.Log 方法,其實(shí)就是相當(dāng)于 前端項(xiàng)目的 console.log 方法,也就是開發(fā)過程中用于打印日志的
*/
public class EmptyTest : MonoBehaviour
{
public GameObject Cube;
//預(yù)制體
public GameObject Prefab;
// Start is called before the first frame update
void Start()
{
//當(dāng)前類的屬性gameObejct就對應(yīng)了unity當(dāng)前腳本所綁定的游戲?qū)ο? GameObject gameObject = this.gameObject;
Debug.Log("gameObject: " + gameObject);
Debug.Log("gameObject的名稱:" + gameObject.name);
Debug.Log("gameObject的標(biāo)簽:" + gameObject.tag);
Debug.Log("gameObject的圖層:" + gameObject.layer);
Debug.Log("Empty下的Cude的name:" + Cube.name);//子物體的名稱
Debug.Log("Empty下的Cude的繼承的父類的激活狀態(tài):" + Cube.activeInHierarchy);//子物體繼承關(guān)系的激活狀態(tài)【看所繼承的父物體的激活狀態(tài)】
Debug.Log("Empty下的Cude的自身的激活狀態(tài):" + Cube.activeSelf);//子物體自身的激活狀態(tài)
Debug.Log("Empty的transform:" + transform.position);//位置
Debug.Log("Empty下的Cude的transform:" + transform.Find(Cube.name).position);//位置
//給游戲?qū)ο筇砑由辖M件,通過拿到游戲?qū)ο?AddComponent方法
gameObject.AddComponent<MeshFilter>();
Cube.AddComponent<AudioSource>();
//獲取其他組件【這個(gè)其他組件,其實(shí)就是排除掉Transform這個(gè)必須的組件后的其他組件】
Debug.Log("Empty獲取其他組件:" + GetComponent<BoxCollider>());
Debug.Log("Cube獲取其他組件:" + Cube.GetComponent<BoxCollider>());
//從子物體身上獲取組件
// GetComponentInChildren<BoxCollider>();
//從父物體身上獲取組件
//GetComponentInParent<BoxCollider>();
//全局查找--細(xì)節(jié),就是首字母大寫了,小寫的是屬性
//所謂的全局查找,其實(shí)就是對當(dāng)前的C#腳本所處的場景SamepleScene下進(jìn)行全局查找
GameObject testGameObject = GameObject.Find("TestGameObject");
//還可以通過標(biāo)簽名獲取到游戲?qū)ο? GameObject testGameObejct2 = GameObject.FindWithTag("enemy");
Debug.Log("testGameObject:" + testGameObject);
Debug.Log("testGameObject2:" + testGameObejct2);
//還可以設(shè)置游戲?qū)ο笫欠窦せ? testGameObject.SetActive(false);//取消激活
//需求:通過預(yù)制體,在場景中實(shí)例化出游戲?qū)ο? //預(yù)制體的類型也是GameObject
// Instantiate(Prefab);
// 實(shí)例化出游戲?qū)ο?,并且是?dāng)前掛載了C#腳本的游戲?qū)ο蟮淖游矬w
GameObject capsule = Instantiate(Prefab, transform);
// 銷毀游戲?qū)ο? Destroy(capsule);
}
// Update is called once per frame
void Update()
{
}
}
8、Application 讀寫文件需要用到的類
(1) Application 讀寫文件
(2) Application 還有控制權(quán)限的作用,比如控制游戲后臺運(yùn)行,打開鏈接,退出游戲
9、游戲場景
■ 核心類-場景管理類 SceneManager:和場景的創(chuàng)建、場景切換|加載、場景的獲取、場景數(shù)量、場景卸載有關(guān)
■ 關(guān)于場景的常用屬性:場景名稱、場景是否已加載、場景路徑、場景索引、場景中獨(dú)立的游戲?qū)ο?/h3>
■ 異步加載場景并獲取進(jìn)度
- 通過協(xié)程的方式[協(xié)程,其實(shí)就是協(xié)助類型的多線程] StartCoroutine(任務(wù));
- 在Update中獲取到進(jìn)度,因?yàn)閁pdate是輸出每一幀的改變
? 通過計(jì)時(shí)器控制場景跳轉(zhuǎn):
10、transform
(1) 位置、旋轉(zhuǎn)、縮放、向量
(2) transform 其他關(guān)系
(2) transform 父子關(guān)系
游戲?qū)ο蟮母缸蛹夑P(guān)系,其實(shí)是通過transform 維持的
......
11、Unity GUI(簡稱UGUI)
GUI:Graphical User Interface 圖形用戶界面或圖形用戶接口。
GUI,是平面的,在2d下操作
- UI 常用的控件
-
UI 最基本的是
畫布Canvas
,相當(dāng)于屏幕。- 最基本的UI就是畫布Canvas,其他UI控件-Text、Image、Button等等都是放在畫布上面的,作為Canvas的子控件。
-
UI 另外最基本的是
事件系統(tǒng)EventSystem
,其實(shí)就是把很多常見的事件,比如點(diǎn)擊事件,封裝起來。
(1) Canvas,相當(dāng)于屏幕
■ Canvas組件的渲染模式一般默認(rèn)是屏幕空間-覆蓋
- 攝像機(jī)是拍攝到真正的游戲畫面,3d畫面。攝像機(jī)拍攝到畫面會先被渲染出來。
- UI 覆蓋:會覆蓋到攝像機(jī)拍攝的畫面之上。所以,UI 永遠(yuǎn)可以在最上層顯示。
- 這也符合大多數(shù)真實(shí)的游戲情況,UI 顯示在游戲畫面之上。比如,打開一個(gè)背包界面或者人物屬性界面,不可能被游戲場景的物體,比如被樹木遮蓋住。
■ Canvas組件的縮放模式一般是選擇按屏幕分辨率縮放
- Canvas 做了適配,要真正生效,Canvas 下的第一層子控件也是要做適配。
-
第一層的子控件做適配:
-
錨點(diǎn)是設(shè)置在父物體身上的。
-
控件錨點(diǎn)的作用:控件永遠(yuǎn)會和錨點(diǎn)保持一定的距離。
-
(2) 事件綁定:以Button這個(gè)UI為例
① 在畫布Canvas 下添加UI-Button,在項(xiàng)目下創(chuàng)建一個(gè)C#腳本,然后把C#腳本掛載到Button身上
② 接著在C# 方法,寫一個(gè)點(diǎn)擊事件發(fā)生時(shí)的處理方法 BtnClick()
③ 最后在Button 組件下面的On Click() 添加上C# 腳本中,點(diǎn)擊事件發(fā)生時(shí)的處理方法 BtnClick()
(3) 管理UI 組件-面板Panel[布局、對齊、適配的軸點(diǎn)位置等]
(4) 關(guān)于GUI常見的UI【text、button、slider等等】 的一些操作詳情,可以參考文章:
- 寫得非常詳細(xì)---《unity之UGUI系統(tǒng)基礎(chǔ)》:https://blog.csdn.net/qq_42898629/article/details/83504863
文章來源:http://www.zghlxwxcb.cn/news/detail-412109.html
如果本文對你有幫助的話記得給一樂點(diǎn)個(gè)贊哦,感謝!文章來源地址http://www.zghlxwxcb.cn/news/detail-412109.html
到了這里,關(guān)于Unity快手上手【熟悉unity編輯器,C#腳本控制組件一些屬性之類的】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!