CocosCreator でレイヤー管理に常駐ノードを使用する方法

CocosCreator でレイヤー管理に常駐ノードを使用する方法

CocosCreator バージョン: 2.3.4

ほとんどのゲームにはレイヤー管理機能があり、例えば

  • sceneLayer シーンレイヤー
  • panelLayer ポップアップレイヤー
  • tipLayer ヒントボックスレイヤー

Cocos のシーンは永続的ではなく、切り替えるたびに自動的に破棄されます。これらのレイヤーをシーンに配置する場合、シーンごとに 1 回配置する必要がありますか?そしてまたそれを手に入れるのですが、これは非常に面倒です。

シーンは cc.director.loadScene を使用してロードされます。シーンのコンテナ ノードは、ディレクターの nodeActivator であるようです。

ここで、シーン コンテナーや Cocos のトップレベル コンテナーについては考慮しません。レイヤー管理には 2 つのアプローチが考えられます。

1. シーンは1つだけ

ゲーム全体では 1 つのシーンがあり、それがゲームの入り口のシーンです。このシーンには、sceneLayer などのレイヤーのノードが配置されます。この入り口のシーンは、エグレットとラヤのステージに相当します。

次に、すべてのシーンとポップアップ モジュールをプレハブ化し、表示されるたびに、エントリ シーンの対応するレイヤーに addChild を追加するだけです。

2. 常駐ノードを使用する

例えば、シーン1にsceneLayerなどのレイヤーを配置します。表示をわかりやすくするために、各レイヤーに単一の色を追加しました。

常駐ノードはルート ノードの下、つまりキャンバスと同じレベルにある必要があります。 3 つのレイヤーを永続ノードとして設定します。

オンロード(){
    cc.game.addPersistRootNode(cc.find("sceneLayer"));
    cc.game.addPersistRootNode(cc.find("panelLayer"));
    cc.game.addPersistRootNode(cc.find("tipLayer"));
}

次にシーンを切り替えます。新しいシーンでも、sceneLayer などのレイヤーを表示したり取得したりすることができます。

オンロード(){
    console.log(cc.find("sceneLayer")); //sceneLayerのcc.Nodeを出力
}

常駐ノードを使用すると、入口シーンに sceneLayer などのレイヤーを配置できます。参照を保存するには、レイヤー管理クラスを使用します。

III. ベストプラクティス

レイヤー管理クラス、シングルトン

デフォルトクラスLayerManagerをエクスポートし、cc.Componentを拡張します。

    プライベート静的インスタンス:LayerManager;
    パブリック静的ins():LayerManager{
        if (this.instance == null) {
            this.instance = 新しい LayerManager();
        }
        this.instance を返します。
    }

    パブリック パネル レイヤー:cc.Node;
    パブリック tipLayer:cc.Node;
    
}

エントリシーンに常駐ノードレイヤーを設定し、レイヤー管理クラスを使用して参照を保存します。後で使用するため。

@ccクラス
デフォルトクラスHelloworldをエクスポートし、cc.Componentを拡張します。

    オンロード(){
        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");
    }
}

以上が、CocosCreator のレイヤー管理用常駐ノードの使用方法の詳細です。CocosCreator のレイヤー管理用常駐ノードの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • CocosCreator 入門チュートリアル: ネットワーク通信
  • CocosCreatorでWeChatゲームを作成する方法
  • CocosCreator システムイベントがどのように生成され、トリガーされるかについての詳細な説明
  • CocosCreatorでゲームコントローラーを使用する方法
  • CocosCreator Huarongdaoデジタルパズルの詳しい説明
  • CocosCreatorゲームにおける魚群アルゴリズムの詳細な説明
  • CocosCreator最適化DrawCallの詳細な説明
  • CocosCreatorがスキル冷却効果を実装
  • cocoscreatorプレハブの詳しい説明
  • CocosCreatorメッセージ配信メカニズムの詳細な説明

<<:  新しい Linux ファイル権限設定における umask の詳細な理解

>>:  Dockerコンテナとローカルマシン間でファイルを転送する方法

推薦する

nginx を使用して同じドメイン名で複数の Vue プロジェクトをデプロイし、リバース プロキシを使用する方法

効果現在、プロジェクトは2つ(project1、project2)あり、nginxに付属するinde...

HTML での位置の使用に関する簡単な紹介

昨日 HTML を少し学んだばかりで、JD.com の検索バーを作るのが待ちきれませんでした。 作っ...

Mysql8.0はソート問題を解決するためにウィンドウ関数を使用する

MySQL ウィンドウ関数の紹介MySQL は MySQL 8.0 以降、ウィンドウ関数をサポートし...

Mysql データベースの高度なビュー、トランザクション、インデックス、自己接続、ユーザー管理の例の分析の使用

この記事では、ビュー、トランザクション、インデックス、自己接続、ユーザー管理など、MySQL データ...

jsドラッグ効果の原理と実装

ドラッグ機能は主に、ドラッグによる並べ替え、ポップアップ ボックスのドラッグと移動など、ユーザーがカ...

HBuilderX で Tomcat 外部サーバーを設定して、JSP インターフェイスを表示および編集する方法の詳細な説明

1. 最初の方法は、ローカルのTomcatを起動してJSPを表示することです。 tomcatのweb...

zabbix 4.04 の詳細なインストール チュートリアル (CentOS 7.6 ベース)

1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...

Dockerのセキュリティについて Docker-TLS暗号化通信の問題

目次1. Dockerのセキュリティ問題2. Dockerアーキテクチャの欠陥とセキュリティメカニズ...

ubuntu16.04 で nginx を完全にアンインストールするための関連コマンド

nginx の概要nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリバース プ...

CSS 等高レイアウトの一般的な方法

等高レイアウト同じ親コンテナー内の同じ高さの子要素のレイアウトを指します。等高レイアウトの実装の観点...

削除、切り捨て、ドロップの違いと選択方法

序文先週、同僚が私に尋ねました。「兄さん、MySQL にバグを見つけました。午後にディスクをクリーン...

docker compose の使い方の詳しい説明

目次Docker Compose の使用シナリオ基本的なデモ基本的な操作とメンテナンスdocker-...

純粋な CSS を使用して脈動するローダー効果のソースコードを作成する

効果プレビュー右側の「クリックしてプレビュー」ボタンを押すと現在のページでプレビューが表示され、リン...

Javascript 構造化代入の詳細

目次1. 配列の分解2. オブジェクトの分解3. 不完全な解体4. 分割代入を使用して変数交換を実装...