Se non si desidera utilizzare
void Start() {
levelManager = GameObject.FindObjectOfType<LevelManager>();
}
che spesso. In particolare su start
Per rispondere alla domanda, queste due funzioni in realtà non sono molto simili. Uno è un richiamo esterno, l'altro un interno.
Quindi qual è la differenza?
Il GameObject.FindObjectOfType
è più di una ricerca estesa scena e non è il modo ottimale di ottenere una risposta. In realtà, Unity ha dichiarato pubblicamente il suo super slow
Il GetComponent<LevelManager>();
è una chiamata locale. Il significato di qualsiasi file sta effettuando questa chiamata cercherà solo il GameObject a cui è collegato. Quindi nell'ispettore, il file cercherà solo altre cose nella stessa finestra di ispezione. Come Mesh Renderer, Mesh Filter, Etc. O che oggetti bambini. Credo che ci sia una chiamata separata per questo, però.
Inoltre, è possibile utilizzarlo per accedere ad altri componenti di GameObject se li si fa riferimento per primi (vedi sotto).
Risoluzione:
mi sento di raccomandare facendo una ricerca tag
nella funzione awake
.
private LevelManager levelManager;
void Awake() {
levelManager = GameObject.FindGameObjectWithTag ("manager").GetComponent<LevelManager>();
}
Non dimenticare di contrassegnare il GameObject con lo script LevelManager
su di esso con l'aggiunta di un tag. (Fare clic GameObject, guardare la parte superiore della finestra di ispezione, e fare clic su Tag-> Aggiungi comando
Si può fare, o fare
public LevelManager levelManager;
e trascinare il GameObject nella casella della finestra di ispezione.
Entrambe le opzioni sono decisamente migliori rispetto a un GameObject.FindObjectOfType
.
Spero che questo aiuti
@Kryptos, cosa si intende per 'Object'? 'GetComponent
È interessante notare che 'GetComponent
@Kryptos, suppongo che 'Transform' sia un tipo speciale di componente, perché non è possibile rimuoverlo, quindi forse è per questo che viene omesso da' GetComponent '. Probabilmente nessuno tenterà mai di fare riferimento a una trasformazione (o qualsiasi altro componente per essere onesti) da GetComponent