私は記事10000 UPDATE() CALLSを読んだ。 AuthorはUpdateManagerを使用します。それはオブジェクトの他の全てのMonBehavioursでUpdate
メソッドを呼び出す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
で再帰的メソッドを使用する必要がありますか?すべてのオブジェクトにスクリプトを含む他のオブジェクトが含まれている可能性があります。他のオブジェクトなどが含まれている可能性があります...無制限の入れ子
また、一部のオブジェクトは動的にインスタンス化できます...マネージャにモノを追加するには?正しい方法は何ですか?
管理対象のモノオブジェクトの静的リストを作成し、各モノオブジェクトの 'Start()'関数でそれをそのリストに追加し、マネージャのリストから読み込むことができます。 –
@ YotamSalmon Neee。私はそれが良い考えだとは思わない。 Monobehavioursを50..100持っているとどうなりますか?各スクリプトに手動でコードを追加しますか?私の心が変わるとどうなりますか?手動で削除しますか?私の考えを変えるのか?))それは生産的ではありません....... 'java 8'は、デフォルトのメソッドを(実装で)含むことができるインターフェースを持っています。それはより正しいでしょう、私は –