So verwenden Sie residente Knoten für die Ebenenverwaltung in CocosCreator

So verwenden Sie residente Knoten für die Ebenenverwaltung in CocosCreator

CocosCreator-Version: 2.3.4

Die meisten Spiele verfügen über Layer-Management, wie zum Beispiel

  • sceneLayer Szenen-Layer
  • PanelLayer-Popup-Ebene
  • tipLayer Tippbox-Ebene

Die Szenen in Cocos sind nicht persistent und werden bei jedem Wechsel automatisch zerstört. Wenn Sie diese Ebenen auf die Szene legen, müssen Sie sie dann für jede Szene einmal legen? Und dann bekomme ich es erneut, was sehr ärgerlich ist.

Die Szene wird mit cc.director.loadScene geladen. Der Containerknoten der Szene scheint ein nodeActivator im Director zu sein.

Lassen wir jetzt den Szenencontainer oder den Container der obersten Ebene von Cocos außer Acht. Mir fallen zwei Ansätze zum Layer-Management ein.

1. Es gibt nur eine Szene

Das ganze Spiel hat eine Szene, nämlich die Szene am Anfang des Spiels. In dieser Szene werden Knoten von Ebenen wie sceneLayer platziert. Diese Eingangsszene entspricht der Bühne von Egret und Laya.

Dann werden alle Szenen und Popup-Module in Prefabs umgewandelt und bei jeder Anzeige wird einfach ein Child zur entsprechenden Ebene der Einstiegsszene hinzugefügt.

2. Verwenden Sie residente Knoten

Beispielsweise habe ich Ebenen wie „sceneLayer“ in Szene 1 eingefügt. Zur einfacheren Anzeige habe ich jeder Ebene eine einzelne Farbe hinzugefügt.

Der residente Knoten muss sich unter dem Stammknoten befinden, also auf derselben Ebene wie die Zeichenfläche. Legen Sie die drei Ebenen als permanente Knoten fest.

beim Laden(){
    cc.game.addPersistRootNode(cc.find("sceneLayer"));
    cc.game.addPersistRootNode(cc.find("panelLayer"));
    cc.game.addPersistRootNode(cc.find("tipLayer"));
}

Wechseln Sie dann die Szene. In der neuen Szene können Sie weiterhin Ebenen wie Szenenebene anzeigen und abrufen.

beim Laden(){
    console.log(cc.find("sceneLayer")); //CC.Node von sceneLayer ausgeben
}

Mithilfe von residenten Knoten können wir Ebenen wie Szenenebene in der Eingangsszene platzieren. Verwenden Sie die Layer-Management-Klasse, um die Referenz zu speichern.

Bewährte Vorgehensweisen

Layer-Management-Klasse, Singleton

exportiere Standardklasse LayerManager erweitert cc.Component {

    private statische Instanz: LayerManager;
    öffentliche statische ins():LayerManager{
        wenn (diese.Instanz == null) {
            diese.Instanz = neuer LayerManager();
        }
        gib diese Instanz zurück;
    }

    öffentliches PanelLayer:cc.Node;
    öffentliche tipLayer:cc.Node;
    
}

Legen Sie in der Einstiegsszene eine residente Knotenebene fest und verwenden Sie die Ebenenverwaltungsklasse, um die Referenz zu speichern. Zur späteren Verwendung.

@ccklasse
exportiere Standardklasse Helloworld erweitert cc.Component {

    beim Laden(){
        cc.game.addPersistRootNode(cc.find("sceneLayer"));
        cc.game.addPersistRootNode(cc.find("panelLayer"));
        cc.game.addPersistRootNode(cc.find("tipLayer"));

        LayerManager.ins().panelLayer = cc.find("panelLayer");
        LayerManager.ins().tipLayer = cc.find("tipLayer");
    }
}

Oben finden Sie Einzelheiten zur Verwendung von Resident Nodes für die Layer-Verwaltung in CocosCreator. Weitere Informationen zu Resident Nodes für die Layer-Verwaltung in CocosCreator finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • 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
  • Detaillierte Erklärung des Cocoscreater-Prefabs
  • Detaillierte Erläuterung des CocosCreator-Nachrichtenverteilungsmechanismus

<<:  Detailliertes Verständnis von umask in den neuen Linux-Dateiberechtigungseinstellungen

>>:  So übertragen Sie Dateien zwischen Docker-Container und lokalem Computer

Artikel empfehlen

Detaillierte Erklärung der HTML-Download-Funktion

Das neue Projekt ist im Grunde abgeschlossen. Es ...

Lösung für das Problem des Speicherns des Formats in HTML TextArea

Das Format des Textbereichs kann beim Speichern in...

Zabbix konfiguriert DingTalks Alarmfunktion mit Bildern

Umsetzungsideen: Zunächst müssen die Alarminforma...

Schaltflächen und Dropdown-Menüs für Studiennotizen in Bootstrap 3.0

Der vorherige Artikel war eine einfache Überprüfu...

20 CSS-Codierungstipps für mehr Effizienz (sortiert)

In diesem Artikel möchten wir eine Sammlung von 2...

Bringen Sie Ihnen bei, wie Sie die Zeigerposition in Javascript erhalten

Die Methode zum Abrufen der Zeigerposition in Jav...

Häufige Probleme und Lösungen beim Erstellen von MySQL MGR

Inhaltsverzeichnis 01 Häufige Fehler 1 02 Häufige...

So verwenden Sie Anti-Shake und Throttling in Vue

Inhaltsverzeichnis Vorwort Konzept Stabilisierung...

Verwendung des Linux-SFTP-Befehls

Konzept von SFTP sftp ist die Abkürzung für Secur...

Eine schnelle Lösung für das Problem der PC- und Mobilanpassung

Beim Erstellen einer Webseite müssen wir normaler...