2012年9月1日 星期六

Unity優化整理


1.非必要請少用Update,如一定需要使用可改為非每次讀取

//五格讀一次
function Update() {
    if(Time.frameCount % 5 == 0) { 
        DoSomeThing(); 
    }
}

2.主動回收垃圾
這是我在某處找到的資料,實際運作的成效我感覺不出來

function Update() {
    if(Time.frameCount % 50 == 0) { 
        System.GC.Collect();
    }
}

3.一個模型一張貼圖,不使用復合材質

4.在不影響效果下,壓縮貼圖

5.如果一個腳本多處有使用的話,盡量委派

private var _EffectScript:EffectScript;
function Start() {
    _EffectScript=GameSingleton.Effect.GetComponent(EffectScript);
}

6.一直Instantiate是非常消耗CPU,建議創造出來的物件能重複利用

7.小習慣 能使用int就不要使用float


各位大大,如果有相關的優化資料,也可交流一下!!
待捕完........

更容易的存取場景中的GameObject


不知道這是不是大家都會用的方法!!

之前要在腳本存取場景中的GameObject
就必須

public var TestObject:GameObject;
然後聯結場景中的物件,
有多少腳本要使用就必須拉幾次,
我就想說能不能只要做一次就好

以下是我現在使用的方法
建一個全域的腳本

GameSingleton.js
================================
#pragma strict
static var TestObject:GameObject;//全域變數
================================

然後有個一開始要執行的腳本

StartGame.js
================================
#pragma strict
public var TestObject:GameObject;//聯結場景中的物件
function Awake(){
GameSingleton.TestObject= TestObject;//將全域的TestObject委派到場景中的TestObject
}
================================

之後在任一地方都可以用GameSingleton.TestObject讀取到場景中的該物件!!