2017-01-01 33 views
-1

這是如何完成的,我可以自己使用系統類型嗎?它是否爲摘要?在Unity3D中,每個腳本都一次調用更新。怎麼樣?

+1

是什麼讓你覺得它一次調用所有的人? (這不是真的) – UnholySheep

+0

好吧,不是litteraly。我的意思是自動。 Unity如何在場景中的所有monobehaviours上調用該方法? –

+2

對於確切的實現細節,你不得不問Unity3D開發者。但實質上,所有通過Inspector附加的腳本都會在列表中進行註冊,然後在每個框架中進行迭代。 – UnholySheep

回答

1

不幸的是,確切的代碼是由統一本身調用的,你不能用像ILSpy這樣的應用程序來查看它。

本質上,Unity會在活動場景中獲取所有GameObjects,並檢查其MonoBehaviour腳本是否具有更新功能,如果他們這樣做,則會調用它。

你可以想象它類似於這樣的事情:

void OnFrameRender() 
{ 
    foreach (GameObject g in allGameObjectsInCurrentScene) 
    { 
     MonoBehaviour m = g.GetComponent<MonoBehaviour>(); 
     if (m.GetType().GetMethod("Update") != null) 
      m.Invoke("Update"); 
    } 
    // Additional render logic 
} 

由於統一本身在C++中,而不是在C#編碼,這不會是確切的代碼,但這種方法可能是相似的。

+0

謝謝,這就是我的意思! –

相關問題