我讀過一篇文章10000 UPDATE() CALLS。 作者使用UpdateManager。它有Update
方法,在所有其他對象的MonoBehaviours中調用Update
方法。它的工作速度比分別從每個MonoBehaviour調用Update
方法快。如何添加場景的所有MonoBehaviours到列表中?
該經理的樣子:
private ManagedUpdateBehavior[] list;
private void Start() {
list = GetComponents<ManagedUpdateBehavior>();
}
private void Update() {
var count = list.Length;
for (var i = 0; i < count; i++) {
// UpdateMe
list[i].UpdateMe();
}
}
和每一個對象現在包含的代碼組件:
public class ManagedUpdateBehavior : MonoBehaviour {
// some variables
public void UpdateMe() {
// some logic
}
}
這沒關係,如果5-6-7-8-對象將是有分量。
但如果我有100個對象? 1000? 10000?
如何找到和場景的所有對象添加所有ManagedUpdateBehaviors
?我應該在On Start
上使用遞歸方法嗎?因爲每個對象可能包含其他對象的腳本,它們可能含有其它對象等..無限嵌套
也有一些物體可以被動態實例...如何在他們的單加入的經理嗎?什麼是正確的方式?
您可以創建一個被管理的monobehaviours的靜態列表,並在每個monobehaviour的'Start()'函數中添加它到該列表中,然後從管理器中的列表中讀取。 –
@YotamSalmon Neee。我不認爲這是個好主意。如果我有50..100個Monobehaviours會怎麼樣?手動添加代碼到每個腳本?如果我改變了主意,該怎麼辦?手動刪除?改變我的想法嗎?))它不是生產性的.......'java 8'具有可以包含默認方法的接口(帶有實現)...如果C#有類似的東西,那將是很好的....那會更合適,我認爲 –