2017-01-01 4 views
-1

これはどのように達成されましたか?自分でシステムタイプを使用できますか?抄録ですか?Unity3Dでは、一度にすべてのスクリプトでupdateが呼び出されます。どうやって?

+1

あなたは一度にすべてを呼び出すと思いますか? (それは真実ではない) – UnholySheep

+0

よし、litteralyではない。私は自動的に意味した。どのようにUnityはシーン内のすべてのモノオブジェクトについてメソッドを呼び出すか? –

+2

正確な実装の詳細については、Unity3D開発者に尋ねる必要があります。しかし、本質的には、インスペクタを介して添付されたすべてのスクリプトがリストに登録され、各フレームが反復されます。 – UnholySheep

答えて

1

悲しいことに、悲しいことに、そのための正確なコードは単一性によって呼び出され、ILSpyのようなアプリケーションで見ることはできません。

しかし、本質的に、Unityはアクティブなシーン内のすべてのGameObjectを取得し、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

ありがとう、これは私が意味していたものです! –

関連する問題