最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity學(xué)習(xí)筆記04腳本編程

2021-11-29 20:40 作者:挽秋_z  | 我要投稿

組件和腳本

二者之間的關(guān)系:

1.腳本使用代碼來實現(xiàn)具體功能

2.腳本作為組件掛接到游戲物體上

3.腳本中的某些參數(shù)可以通過組件來便于修改

繼承于 MonoBehaviour 類的腳本可以掛接給unity中的游戲物體,成為一個組件。

public class first : MonoBehaviour

重要函數(shù)或類

Transform類

1.物體的位置,旋轉(zhuǎn)和縮放控制。

2.場景中的每個物體都會包含這個組件。

3.可以構(gòu)造層次化(有父物體或者子物體)。

更新函數(shù)

Update

刷新每一幀的時候都會執(zhí)行,在渲染和計算動畫之前,(比如GameObject和transform相關(guān)的改變都可以寫在這里)

FixedUpdate

物理引擎更新時候執(zhí)行,執(zhí)行頻率是固定的,不同于渲染更新,給予物理體的操作寫在這個函數(shù)里,一般用來完成跟物理更新有關(guān)的操作。

LateUpdate

執(zhí)行是在Update和FixedUpdate之后,應(yīng)用于要確保需要最后更新的場景(如攝像機(jī)要一直面朝某一個場景中的游戲物體,需要等場景物體運動計算完成后再改變攝像機(jī)的朝向)

初始化函數(shù)

Awake

相當(dāng)于構(gòu)造函數(shù)

加:

在腳本實例剛剛被加載時,觸發(fā)Awake。

Start

在物體執(zhí)行第一幀時被調(diào)用

物理相關(guān)函數(shù)

碰撞觸發(fā)響應(yīng)函數(shù),實現(xiàn)多種游戲性。

時間類

1.按照物理公式來進(jìn)行計算,如計算位移要使用速度乘以時間,不應(yīng)該直接使用基于幀的計算。

2.可以縮放時間遲,得到暫停(如慢鏡頭之類的效果)或者“子彈時間”效果。

射線投射

1.用于查詢場景信息(如場景中有哪些物體,用來導(dǎo)航等。發(fā)射的光線擊中的場景物體)

2.實現(xiàn)游戲功能(向著鼠標(biāo)點擊方向發(fā)射物體)

有兩種類型,一是圖形式,用于UI功能實現(xiàn)中。而是物理式,可以用于二維或者三維物理體查詢中

函數(shù)執(zhí)行順序

1.游戲物體之間可能存在依賴關(guān)系。

2.程序操作可能依賴于執(zhí)行前后關(guān)系,比如Awake和Start都可以初始化,但是Awake在Start之前調(diào)用。

Awake-->OnEnable-->Reset-->Start-->FixedUpdate-->,,,,,,,,

//部分記錄
void Start()
? ?{
? ? ? ?Debug.Log("Called Start");
? ?}
? ?private void Awake()
? ?{
? ? ? ?Debug.Log("Called Awake");
? ?}
? ?private void OnEnable()
? ?{
? ? ? ?Debug.Log("Called OnEnable");
? ?}
? ?private void OnLevelWasLoaded(int level)
? ?{
? ? ? ?Debug.Log("Called OnlevelWasLoaded"); ?
? ? ? ?//有新關(guān)卡被載入的時候才會被調(diào)用
? ?}
? ?private void OnApplicationPause(bool pause)
? ?{
? ? ? ?Debug.Log("called pause");
? ? ? ?//當(dāng)游戲被暫停的時候調(diào)用
? ?}
? ?private void OnPreCull()
? ?{
? ? ? ?Debug.Log("called OnPreCul");
? ? ? ?//當(dāng)攝像機(jī)剔除發(fā)送之前被執(zhí)行
? ?}
? ?private void OnWillRenderObject()
? ?{
? ? ? ?Debug.Log("called OnWillRenderObjec");
? ? ? ?//被渲染物體馬上要被渲染的時候執(zhí)行
? ?}
? ?private void OnPreRender()
? ?{
? ? ? ?Debug.Log("called OnPreRender");
? ? ? ?//攝像機(jī)渲染完成前被調(diào)用
? ?}
? ?private void OnPostRender()
? ?{
? ? ? ?Debug.Log("called OnPostRender");
? ? ? ?//攝像機(jī)渲染完成后被調(diào)用
? ?}
? ?//下面三個是關(guān)于物體或者程序的退出的函數(shù)
? ?private void OnDestroy()
? ?{
? ? ? ?
? ?}
? ?private void OnApplicationQuit()
? ?{
? ? ? ?
? ?}
? ?private void OnDisable()
? ?{
? ? ? ?
? ?}

序列化

指的是在游戲保存或者載入過程當(dāng)中,如何對數(shù)據(jù)進(jìn)行操作。

概念

將數(shù)據(jù)結(jié)構(gòu)或?qū)ο鬆顟B(tài)轉(zhuǎn)換為可以存儲和重建的格式的自動過程。

很多引擎功能使用了序列化,保存和載入、屬性面板、實例化和預(yù)制件。

Unity用序列化過程去保存和加載場景,Asset等。

基本中的元素可以序列化規(guī)則

是公有的或者有SerializeField屬性(不能是靜態(tài)的,不能是常量,不能是只讀)

復(fù)合數(shù)據(jù)結(jié)構(gòu)也可能被自動序列化(簡單數(shù)據(jù)類型數(shù)組容器可以被序列化,List<T>中元素是簡單字段類型是可以被序列化的)

可以被序列化的類

1.含有Serializable屬性

2.不能是虛類

3.不能是靜態(tài)類

4.不能是泛型類,但是可以繼承自泛型類

協(xié)程

一個程序循環(huán)是在一段時間內(nèi)逐步完成的,而不是在一個更新幀內(nèi)完成,這時就需要用到協(xié)程函數(shù)。

協(xié)程Coroutine和普通函數(shù)的區(qū)別

普通函數(shù)會在返回前執(zhí)行完所有的指令(意味著函數(shù)內(nèi)的指令都會在一幀之內(nèi)完成)

協(xié)程可以在運行到特定指令后返回,等下一幀或者特定時間后繼續(xù)運行。

使用協(xié)程

1.IEnumerator作為協(xié)程函數(shù)返回值

2.使用StartCoroutine來啟用(調(diào)用)協(xié)程

3.可以通過返回等到時間來延遲下次調(diào)用(WaitForseconds)

4.使用StopCoroutine或者StopAllCoroutines來停止協(xié)程

預(yù)制件(Prefab)

類似于一個模板,但使用該模板的結(jié)果也不完全相同。

作用

1.可重用的有特定組件、屬性和子物體的游戲?qū)ο蟆?/p>

2.類似于模板,將物體按照模板在場景中實例化。

3.對預(yù)制件的修改會影響到所有實例化的物體。

適合預(yù)制件的場合

1.場景資源(比如多次使用的一種樹)

2.NPC(一個角色出現(xiàn)在多個關(guān)卡中,只是某些屬性有區(qū)別)

3.子彈(需要在運行時動態(tài)添加到場景中)

4.玩家角色(每關(guān)都需要擺到特定出生點)

Radius:半徑 ? ? Collider:碰撞

將層級窗口中的對象拖拽到project窗口后,字體變藍(lán)色,說明該對象已經(jīng)變成預(yù)制件。



Unity學(xué)習(xí)筆記04腳本編程的評論 (共 條)

分享到微博請遵守國家法律
绿春县| 新建县| 安多县| 翼城县| 泽普县| 南郑县| 城固县| 博罗县| 延安市| 舞阳县| 科技| 永泰县| 铁岭市| 西宁市| 辰溪县| 泰兴市| 上饶县| 屏山县| 兰西县| 怀集县| 略阳县| 利川市| 恩施市| 庆安县| 北京市| 西乌| 霍邱县| 嘉祥县| 庐江县| 五家渠市| 长葛市| 轮台县| 嘉定区| 毕节市| 新津县| 绥芬河市| 开江县| 临潭县| 于田县| 龙井市| 和平县|