Detaillierte Erklärung des Cocoscreater-Prefabs

Detaillierte Erklärung des Cocoscreater-Prefabs

Fertighaus

Was ist ein Prefab? Es bedeutet wörtlich eine Knotenressource, die vor der Verwendung vorgefertigt wird. Seine Eigenschaften sind die gleichen wie die eines gewöhnlichen Knotens. Es kann als gewöhnlicher Knoten betrachtet werden, der vorgefertigt und noch nicht angezeigt ist.

So erstellen Sie ein Fertighaus

1. Erstellen Sie im Hierarchiemanager einen normalen Knoten und ziehen Sie diesen Knoten dann in den Assets-Ordner im Ressourcenmanager. Zur Vereinfachung der Verwaltung wird ein Prefab-Ordner erstellt, in dem Prefabs einheitlich gespeichert werden.

Doppelklicken Sie auf den Prefab-Knoten, damit er blau wird. Sie können jetzt den in der Szene verbleibenden Knoten löschen. Wenn Sie den Knoten verwenden müssen, erstellen Sie ihn über das Prefab.

Zu diesem Zeitpunkt können Sie die Eigenschaften im Eigenschafteninspektor sehen, die mit denen normaler Knoten identisch sind.

Die Rolle vorgefertigter

1. Erstellen Sie Knoten desselben Typs in Stapeln

Im Wesentlichen geht es darum, eine Vorlage mithilfe eines Prefabs zu erstellen und dann Stapel zu erstellen, indem diese Prefab-Vorlage kopiert wird

Schritt 1: Knoten stapelweise erstellen und in den Objektpool einfügen

 @Eigenschaft(cc.Prefab)
 Fertighaus:cc.Prefab = null;
 //Deklarieren Sie einen Prefab-Typ im Property-Manager, um das definierte Prefab im Property-Manager zu mounten @property(cc.NodePool)
 nodePools:cc.NodePool = null;
 // Deklarieren Sie einen Objektpool, um von Prefabs erstellte Objekte zu speichern. Verwenden Sie Prefabs, um genügend Knoten desselben Typs gleichzeitig zu erstellen, und legen Sie sie dann in den Objektpool. Nehmen Sie sie bei Bedarf heraus und legen Sie sie wieder zurück, wenn sie nicht benötigt werden, um die langfristige Erstellung und Zerstörung einer großen Anzahl von Knoten zu vermeiden. for(let i:number = 0; i < 100; i++){
 	//100 Knoten erstellen let node:cc.Node = cc.instantiate(this.prefab); 
    dies.nodePools.put(Knoten); 
    //Jeden Knoten in den Objektpool setzen}

Schritt 2: Nehmen Sie es heraus und verwenden Sie es, wenn Sie es brauchen

lass node:cc.Node = null;
// Bestimmen Sie, ob sich im Objektpool inaktive Objekte befinden, if (this.nodePools.size() > 0) {
	  // Verwenden Sie die Methode get, um das inaktive Objekt abzurufen. Übergeben Sie zu diesem Zeitpunkt den Objektpool nodePools, in dem die im Stapel erstellten Knoten gespeichert sind, als abzurufenden Parameter. Anschließend können Sie es im an das Prefab gebundenen Skript wieder in den Objektpool einfügen (vorausgesetzt, es handelt sich um nodePrefab.ts) node = this.nodePools.get(this.nodePools);
}anders{
	 // Wenn kein Leerlaufobjekt vorhanden ist, erstellen Sie es über den Prefab-Knoten = cc.instantiate(this.prefab);
}
// Das Mounten auf dem übergeordneten Knoten entspricht dem manuellen Mounten per Drag & Drop this.node.addChild(node);

Schritt 3: Den Knoten nach der Verwendung zurückgeben

// Angenommen, dies ist das oben erwähnte Prefab-Skript nodePrefab.ts nodePools:cc.NodePool = null;
// Nachdem Sie den Knoten im Objektpool über node = this.nodePools.get(this.nodePools); oben herausgenommen haben, definieren Sie im Prefab-Skript einen Objektpool, um den über get oben übergebenen Objektpool zu empfangen/*So dass, wenn nodePool.get() verwendet wird, um den Knoten abzurufen,
Um die Registrierung des Klickereignisses abzuschließen, wird die Wiederverwendungsmethode im Prefab-Skript nodePrefab.ts aufgerufen.
Darüber hinaus kann cc.NodePool.get() eine beliebige Anzahl von Parametern beliebigen Typs übergeben, und diese Parameter werden unverändert an die Wiederverwendungsmethode übergeben*/
// Alles was wir tun müssen, ist eine Rückrufmethode für das Wiederverwendungssystem zu implementieren reuse(EnemyPools:cc.NodePool) {
 		// Holen Sie sich die in get this.EnemyPools = EnemyPools übergebene Instanz der Verwaltungsklasse.
 }
 
// Schreiben Sie eine Funktion zum Recycling von Objekten hit () {
	// Prüfen, ob der Objektpool existiert if(this.nodePools){
    	// Den aktuellen Knoten wiederherstellen this.nodePools.put(this.node);
    }anders{
    	// Andernfalls zerstören Sie den Knoten direkt this.node.destroy();
    }
}

2. Erstellen Sie im Voraus einige Knoten, die zu bestimmten Zeiten angezeigt werden müssen

Wie beispielsweise eine Eingabeaufforderung

 //Erstellen Sie ein Prefab, um das definierte Prefab im Eigenschafteninspektor zu mounten @property(cc.Prefab)
  testPrefab:cc.Prefab = null;
	
	// Wenn Sie diesen Knoten anzeigen müssen, kopieren Sie einfach die Prefab-Erstellung wie oben let node = cc.instantiate(this.testPrefab);
	// Zum übergeordneten Knoten mounten this.node.addChild(node);
    

Die oben genannten sind alle gemountet, und das Folgende verwendet eine dynamische Lademethode, sodass es geladen werden kann, ohne @property (cc.Prefab) wie eine Mounting-Methode zu verwenden.

// Da die folgende Callback-Funktion dies nicht verwenden kann, muss eine Variable definiert werden, die hieran übergeben wird.
sei m_this = dies;
/* Verwenden Sie cc.loader.loadRes, um Prefab dynamisch zu laden. Erstellen Sie zunächst einen Ressourcenordner unter dem Assets-Ordner und legen Sie dann die Prefab-Ressourcen darunter ab. Der erste Parameter ist der absolute Pfad des Prefabs unter Ressourcen, sodass das Prefab im Prefab-Parameter des zweiten Funktionstypparameters abgerufen wird */
[Offizielle Website der Cocos-Dokumentation](https://docs.cocos.com/creator/manual/zh/scripting/load-assets.html?h=assets)
cc.loader.loadRes("assets/OptionBox", Funktion (err, vorgefertigt) {
wenn(!prefab){
    cc.log("Prefab ist leer");
}
var neuerNode = cc.instantiate(prefab);
wenn(!neuerNode){
    cc.log("Knoten ist leer");
}
// Als untergeordneten Knoten des aktuellen Knotens hinzufügen m_this.node.addChild(newNode);

Oben sind zwei gängige Lösungen für die Verwendung von Prefabs aufgeführt. Die erste Methode wird beispielsweise verwendet, um Feinde und Kugeln stapelweise zu erstellen. Die zweite Methode kann auch in Szenarien, in denen sie wiederholt verwendet wird oder Eingabeaufforderungsfelder durch bestimmte Situationen ausgelöst werden, zu einem Prefab gemacht werden.

Oben finden Sie eine ausführliche Erläuterung des Cocoscreater-Prefabs. Weitere Informationen zum Cocoscreater-Prefab finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zur Erstellung von Schießspielen mit CocosCreator
  • So zeichnen Sie in CocosCreator ein cooles Radardiagramm
  • Detaillierte Erklärung der CocosCreator MVC-Architektur
  • Detaillierte Erläuterung des CocosCreator-Nachrichtenverteilungsmechanismus
  • CocosCreator Erste Schritte Tutorial: Netzwerkkommunikation
  • So erstellen Sie WeChat-Spiele mit CocosCreator
  • Detaillierte Erklärung, wie CocosCreator-Systemereignisse generiert und ausgelöst werden
  • So verwenden Sie einen Gamecontroller in CocosCreator
  • Detaillierte Erklärung des digitalen Puzzles CocosCreator Huarongdao
  • Detaillierte Erklärung des Fischschwarm-Algorithmus im CocosCreator-Spiel
  • Detaillierte Erklärung der CocosCreator-Optimierung DrawCall
  • CocosCreator implementiert Skill-Kühleffekt
  • Python implementiert Beispielcode für einfache Socket-Kommunikation
  • Schritte zum Erstellen eines Echtzeit-Log-Trackers mit Python und WebSocket
  • Java implementiert einen einfachen Chatroom für mehrere Personen über Socket
  • So verwenden Sie http und WebSocket in CocosCreator

<<:  Grafisches Tutorial zur MySQL 5.7-Konfiguration ohne Installation

>>:  So fügen Sie einem laufenden Docker-Container dynamisch ein Volume hinzu

Artikel empfehlen

Zusammenfassung gängiger MySQL-DDL-Operationen

Bibliotheksverwaltung Erstellen einer Bibliothek ...

impress.js Präsentationsschicht-Framework (Demonstrationstool) - erste Erfahrungen

Ich habe ein halbes Jahr lang nicht gebloggt, wofü...

Diskussion über CSS-Stilpriorität und kaskadierende Reihenfolge

Im Allgemeinen : [1 wichtige Flagge] > [4 beson...

JavaScript zum Erzielen eines Kalendereffekts

In diesem Artikel wird der spezifische Code für J...

Implementierung der Breakpoint-Wiederaufnahme in Node.js

Vorwort Normaler Geschäftsbedarf: Hochladen von B...

MySQL-Lösung für zeitgesteuerte Backups (mithilfe von Linux crontab)

Vorwort Obwohl manche Liebe auf dieser Welt ihren...

JavaScript zum Erzielen eines Produktlupeneffekts

In diesem Artikel wird der spezifische JavaScript...

js, um einen gleitenden Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Mehrere Möglichkeiten zum Senden von HTML-Formularen_PowerNode Java Academy

Methode 1: Absenden über den Absenden-Button <...

30 kostenlose hochwertige englische Ribbon-Schriftarten

30 kostenlose englische Ribbon-Schriftarten in hoh...

Eine detaillierte Einführung in die Verwendung von Blockkommentaren in HTML

Allgemeine Kommentare in HTML: <!--XXXXXXXX--&g...

So installieren Sie Git unter Linux

1. Einleitung Git ist ein kostenloses, verteiltes...