国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【Unity3D基礎(chǔ)教程】給初學(xué)者看的Unity教程(二):所有腳本組件的基類 -- MonoBehaviour的前世今生

2019-11-17 03:07:45
字體:
供稿:網(wǎng)友

【Unity3D基礎(chǔ)教程】給初學(xué)者看的Unity教程(二):所有腳本組件的基類 -- MonoBehaviour的前世今生

作者:王選易,出處:http://m.survivalescaperooms.com/neverdie/ 歡迎轉(zhuǎn)載,也請(qǐng)保留這段聲明。如果你喜歡這篇文章,請(qǐng)點(diǎn)【推薦】。謝謝!

QQ圖片20140529123319

引子

上一次我們講了GameObject,Compoent,Time,Input,Physics,其中Time,Input,Physics都是Unity中的全局變量。GameObject是游戲中的基本物件。GameObject是由Component組合而成的,GameObject本身必須有Transform的Component,這也加深了我們對(duì)GameObject的理解,即GameObject是游戲場(chǎng)景中真實(shí)存在,而且有位置的一個(gè)物件。

但是我們?cè)趺床倏v這個(gè)GameObject呢?這就需要引入腳本組件了,也就是今天講的MonoBehaviour

MonoBehaviour的生命周期

MonoBehaviour是Unity中所有腳本的基類,如果你使用JS的話,腳本會(huì)自動(dòng)繼承MonoBehaviour。如果使用C#的話,你需要顯式繼承MonoBehaviour。

在我們使用MonoBehaviour的時(shí)候,尤其需要注意的是它有哪些可重寫函數(shù),這些可重寫函數(shù)會(huì)在游戲中發(fā)生某些事件的時(shí)候被調(diào)用。我們?cè)赨nity中最常用到的幾個(gè)可重寫函數(shù)是這幾個(gè):

  • Awake:當(dāng)一個(gè)腳本實(shí)例被載入時(shí)Awake被調(diào)用。我們大多在這個(gè)類中完成成員變量的初始化
  • Start:僅在Update函數(shù)第一次被調(diào)用前調(diào)用。因?yàn)樗窃贏wake之后被調(diào)用的,我們可以把一些需要依賴Awake的變量放在Start里面初始化。 同時(shí)我們還大多在這個(gè)類中執(zhí)行StartCoroutine進(jìn)行一些協(xié)程的觸發(fā)。要注意在用C#寫腳本時(shí),必須使用StartCoroutine開始一個(gè)協(xié)程,但是如果使用的是javaScript,則不需要這么做。
  • Update:當(dāng)MonoBehaviour啟用時(shí),其Update在每一幀被調(diào)用。
  • FixedUpdate:當(dāng)MonoBehaviour啟用時(shí),其 FixedUpdate 在每一固定幀被調(diào)用。
  • OnEnable:當(dāng)對(duì)象變?yōu)榭捎没蚣せ顮顟B(tài)時(shí)此函數(shù)被調(diào)用。
  • OnDisable:當(dāng)對(duì)象變?yōu)椴豢捎没蚍羌せ顮顟B(tài)時(shí)此函數(shù)被調(diào)用。
  • OnDestroy:當(dāng)MonoBehaviour將被銷毀時(shí),這個(gè)函數(shù)被調(diào)用。

下面用一張圖來更形象地說明一下這幾個(gè)類的在MonoBehaviour的生命周期中是如何被調(diào)用的:

lifecycle

在上面這個(gè)圖里,比較難以理解的就是Coroutine究竟是怎么回事?別著急,之后我們會(huì)單獨(dú)寫一篇博客來講這件事。

MonoBehaviour的那些坑

  • 私有(PRivate)和保護(hù)(protected)變量只能在專家模式中顯示.屬性不被序列化或顯示在檢視面板.
  • 不要使用命名空間(namespace)
  • 記得使用 緩存組件查找, 即在MonoBehaviour的長(zhǎng)遠(yuǎn)方法中經(jīng)常被訪問的組件最好在把它當(dāng)作一個(gè)私有成員變量存儲(chǔ)起來。
  • 在游戲里經(jīng)常出現(xiàn)需要檢測(cè)敵人和我方距離的問題,這時(shí)如果要尋找所有的敵人,顯然要消耗的運(yùn)算量太大了,所以最好的辦法是將攻擊范圍使用Collider表示,然后將Collider的isTrigger設(shè)置為True。最后使用OnTriggerEnter來做攻擊范圍內(nèi)的距離檢測(cè),這樣會(huì)極大提升程序性能。

總結(jié)

在MonoBehaviour中最難理解的是Coroutine是如何實(shí)現(xiàn)的,但是如果在一篇博客里面寫Coroutine的話,未免顯得太長(zhǎng),我會(huì)在下一篇博客中寫有關(guān)Coroutine的內(nèi)容。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇赉县| 阜宁县| 林西县| 扶余县| 罗城| 天水市| 含山县| 浦江县| 南宫市| 枞阳县| 陵川县| 密山市| 龙岩市| 扬中市| 会同县| 建始县| 开封县| 安远县| 阿瓦提县| 荃湾区| 青岛市| 南投县| 汪清县| 简阳市| 平阳县| 焦作市| 女性| 太仓市| 柳州市| 兰坪| 贺兰县| 游戏| 普陀区| 南阳市| 余姚市| 同德县| 灵宝市| 达孜县| 福州市| 沂南县| 香港 |