Kürzlich habe ich in meinen Unity-Projekten entdeckt, dass es für eine modularere Anwendung hilfreich ist, eine statische Liste in einer Klasse zu haben, die Verweise auf alle oder einige der erstellten Objekte enthält, so dass sie leicht von anderen Teilen aus aufgerufen werden können das Programm. Ein Beispiel ist unten:Wie heißt diese Programmiermethode? Und ist es schlecht?
private static List<Canvas> availableCanvases = new List<Canvas>();
void Start() {
availableCanvases.Add(this);
}
public static void AddComponentToCanvas(Transform component) {
for (int i = 0; i < availableCanvases; i++) {
//Make sure the canvas still exists
if (availableCanvases[i] != null) {
component.SetParent(availableCanvases[i]);
return;
} else {
availableCanvases.RemoveAt(i);
i--;
}
}
//Reached if no canvas found
//Create new canvas or create error etc...
}
Dies ermöglicht einfach ein Objekt, das zur Laufzeit instanziiert wird selbst ohne es durch eine findWithTag oder findWithType Methode zuzugreifen, um zu einer verfügbaren Leinwand hinzuzufügen, die Leistung wird verletzt, wenn zu viel verwendet.
Ist das schlecht oder gut? Mein Kollege glaubt, dass dies die Singleton-Programmierung darstellt, aber natürlich nicht, weil mehrere Objekte existieren und verwendet werden können.
Ich verstehe nicht Ihre Bedingung, warum würde "availableCanvases" jemals "null" sein? – Blindy
Aktualisiert auf korrekten Zustand if (availableCanvases [i]! = Null) –
Bitte verwenden Sie nicht den Tag [tag: unity] für Fragen zur Spielengine. Verwende [tag: unity3d]. –