2016-06-20 9 views
1

Ich mache einen mobilen Klon von Pacman für Android. Alles funktioniert gut, aber ich versuche mein Spiel so gut wie möglich zu optimieren.Unity3D - GameObject.Find() vs Inspector Zuordnungsleistung

Derzeit in einigen Skripten Ich finde GameObject ‚s von GameObject.Find() in der Start() Funktion meiner Skripte zu tun, wie folgt aus:

void Start() 
{ 
    ghosts  = GameObject.FindGameObjectsWithTag("Ghost"); 
    pacman  = GameObject.Find("Pacman"); 
    gameManager = GameObject.Find("Game Manager").GetComponent<GameManager>(); 
} 

Meine Frage ist, Leistung zu erhöhen würde, wenn ich einige dieser GameObject gemacht‘ s Inspektor zugewiesen Variablen statt .Find() zu tun?

Würde dies die Leistungsgeschwindigkeit erhöhen oder würde es keinen Unterschied machen, wenn ich eine .Find() in der Start() Funktion mache?

Offensichtlich Leistung verringern würde, wenn es in den Update() genannt wurde als das Skript würde versuchen, einen GameObject jeden Rahmen zu finden, aber eine Start() Funktion würde es nur einmal suchen?

+0

nicht sicher, wie um dies zu beantworten. Nein, Sie sollten keine Leistungsänderung bemerken und ja, wenn Sie Find() in Start oder Awake verwenden, wird es nur einmal ausgeführt. –

Antwort

3

Leistung beim Start für diese Art von Dingen ist völlig vernachlässigbar, Inspector Zuordnung erfordert Deserialisierung, während Find erfordert Nachrichtenversand, beide sind langsame Operationen, wenn Sie das wichtig, Profil, dass.

Ich würde sowieso

FindObjectOfType<GameManager>() as GameManager

wich zumindest mehr typsicher ist, verwenden würde ich nicht Editor Inspektion verwenden, wenn möglich, da manuelle Verdrahtung Quelle vieler kleiner Fehler ist. So gebe ich einen Mensch-Zeit-Performance-Grund:

Verwenden Sie nicht Editor-Inspektion, weil wenn Sie etwas verdrahten müssen Sie einen Nullpointer debuggen, die auf lange Sicht essen wird Stunden Ihrer Zeit.

Sie haben sowieso Editor insection in Fällen zu verwenden, wo Sie nicht nur 1 Komponente finden haben, keine Abhilfe für die (es sei denn, Sie verwenden Svelto oder Svelto-ECS weicht eher fortgeschrittene Themen.)