【正文】
們強(qiáng)制foo為指定類型你將獲得更好的性能。 2使用pragma strict 當(dāng)然現(xiàn)在問題是你通常沒有意識到你在使用動態(tài)類型。pragma strict解決了這個簡單的在腳本頂部添加pragma strict。然后unity將在腳本中禁用動態(tài)類型強(qiáng)制使用靜態(tài)類型如果一個類型未知。Unity將報(bào)告編譯錯誤。那么在這種情況下foo將在編譯時(shí)產(chǎn)生一個錯誤 pragma strict function Start var foo GetComponentMyScript 另一個優(yōu)化是組件緩存。不幸的是該優(yōu)化需要一點(diǎn)編碼并且不一定是值得的但是如 果你的腳本是真的用了很長時(shí)間了你需要把最后一點(diǎn)表現(xiàn)出來這是一個很好的優(yōu)化。 當(dāng)你訪問一個組件通過GetComponent或訪問變量Unity會通過游戲?qū)ο笳业秸_的組件。這一次可以很容易地通過緩存保存在一個私有變量里引用該組件。 簡單地把這個 function Update 0 5 變成 private var myTransform : Transform function Awake myTransform transform function Update 0 5 后者的代碼將運(yùn)行快得多因?yàn)閁nity沒有找到變換在每一幀游戲組件中的對象。這同樣適用于腳本組件在你使用GetComponent代替變換或者其它的東西。 內(nèi)置數(shù)組的速度非??焖哉埵褂盟鼈儭?而整列或者數(shù)組類更容易使用因?yàn)槟憧梢院苋菀椎靥砑釉厮麄儙缀鯖]有相同的速度。內(nèi)置數(shù)組有一個固定的尺寸但大多數(shù)時(shí)候你事先知道了最大的大小在可以只填寫了以后。關(guān)于內(nèi)置數(shù)組最好的事情是他們直接嵌入在一個結(jié)構(gòu)緊湊的緩沖區(qū)的數(shù)據(jù)類型沒有任何額外的類型信息或其他開銷。因此遍歷是非常容易的作為一切緩存在內(nèi)存中的線性關(guān)系。 private var positions : Vector3 function Awake positions new Vector3100 for var i0ilt100i positionsi 最簡單的和所有優(yōu)化最好的是少工作量的執(zhí)行。例如當(dāng)一個敵人很遠(yuǎn)最完美的時(shí)間就是敵人入睡時(shí)可以接受。直到玩家靠近時(shí)什么都沒有做。這是種緩慢的處理方式的情況 function Update // 早期進(jìn)行如果玩家實(shí)在是太遙遠(yuǎn)。 if gt 100 return perform real work work... 這不是一個好主意因?yàn)閁nity必須調(diào)用更新功能而你正在執(zhí)行工作的每一個幀。一個比較好的解決辦法是禁用行為直到玩家靠近。有3種方法來做到這一點(diǎn) 。這些回調(diào)都是綁到渲染系統(tǒng)的。只要任何相機(jī)可以看到物體OnBecameVisible將被調(diào)用當(dāng)沒有相機(jī)看到任何一個OnBecameInvisible將被調(diào)用。這種方法在很多情況下非常有用但通常在AI中并不是特別有用因?yàn)橹灰惆严鄼C(jī)離開他們敵人將不 可用。 function OnBecameVisible enabled true function OnBecameInvisible enabled false 。一個簡單的球形觸發(fā)器會工作的非常好。一旦你離開這個影響球你將得到OnTriggerEnter/Exit調(diào)用。 function OnTriggerEnter c : Collider if enabled true function OnTriggerExit c : Collider if enabled false 。Update調(diào)用的問題是它們每幀中都發(fā)生。很可能會只需要每5秒檢檢查一次到玩家的距離。這應(yīng)該會節(jié)省大量的處理周期。 概覽腳本編譯高級 。 這允許腳本以驚人的速度執(zhí)行。這比傳統(tǒng)的javascript快約20倍。比原始的C代碼慢大約50。在保存的時(shí)候Unity將花費(fèi)一點(diǎn)時(shí)間來編譯所有腳本如果Unity還在編譯。你可以在Unity主窗口的右下角看到一個小的旋轉(zhuǎn)進(jìn)度圖標(biāo)。 腳本編譯在4個步驟中執(zhí)行 Assetsquot quotPro Standard Assetsquot 或 quotPluginsquot的腳本被首先編譯。 在這些文件夾之內(nèi)的腳本不能直接訪問這些文.