プレハブプレハブとは何でしょうか? 文字通り、使用前に事前に作成されたノード リソースを意味します。そのプロパティは通常のノードと同じです。事前に作成され、まだ表示されていない通常のノードと見なすことができます。 プレハブの作り方1. 階層マネージャーで通常のノードを作成し、このノードをリソース マネージャーのアセット フォルダーにドラッグします。管理の便宜上、プレハブを均一に保存するためのプレハブ フォルダーが作成されます。 プレハブノードをダブルクリックすると青色に変わります。これで、シーンに残っているノードを削除できます。ノードを使用する必要がある場合は、プレハブを通じて作成します。 このとき、プロパティ インスペクターには通常のノードと同じプロパティが表示されます。 プレハブの役割1. 同じタイプのノードをバッチで作成する基本的には、プレハブを使用してテンプレートを作成し、このプレハブテンプレートをコピーしてバッチを作成します。 ステップ1: バッチでノードを作成し、オブジェクトプールに配置する @property(cc.Prefab) プレハブ:cc.Prefab = null; //プロパティ マネージャーでプレハブ タイプを宣言して、定義されたプレハブをプロパティ マネージャーにマウントします @property(cc.NodePool) ノードプール:cc.NodePool = null; // プレハブによって作成されたオブジェクトを格納するためのオブジェクト プールを宣言します。プレハブを使用して、一度に同じタイプのノードを十分に作成し、それらをオブジェクト プールに格納します。長期間にわたって大量のノードを作成したり破棄したりしないように、必要なときに取り出し、不要になったら戻します。for(let i:number = 0; i < 100; i++){ // 100 個のノードを作成します。let node:cc.Node = cc.instantiate(this.prefab); ノードプールを作成します。 //各ノードをオブジェクト プールに入れる} ステップ2: 必要なときに取り出して使う node:cc.Node を null にします。 // オブジェクトプールにアイドルオブジェクトがあるかどうかを判定します if (this.nodePools.size() > 0) { // get メソッドを使用してアイドル オブジェクトを取得します。このとき、バッチ作成されたノードを格納するオブジェクト プール nodePools を get のパラメーターとして渡します。その後、プレハブにバインドされたスクリプト (nodePrefab.ts であると仮定) でオブジェクト プールに戻すことができます。 node = this.nodePools.get(this.nodePools); }それ以外{ // アイドル オブジェクトが存在しない場合は、プレハブを通じて作成します。node = cc.instantiate(this.prefab); } // 親ノードへのマウントは、手動でのドラッグ アンド ドロップ マウントと同じです。this.node.addChild(node); ステップ3: 使用後にノードを返却する // これは上記のプレハブ スクリプト nodePrefab.ts スクリプトであると仮定します。nodePools:cc.NodePool = null; // 上記の node = this.nodePools.get(this.nodePools); でオブジェクトプールからノードを取り出した後、上記の get で渡されたオブジェクトプールを受け取るためのオブジェクトプールをプレハブスクリプトで定義します。/*nodePool.get() を使用してノードを取得すると、 クリック イベントの登録を完了するために、プレハブ スクリプト nodePrefab.ts 内の再利用メソッドが呼び出されます。 さらに、cc.NodePool.get() は任意の数の任意の型のパラメータを渡すことができ、これらのパラメータはそのまま再利用メソッドに渡されます*/ // 再利用システムコールバックメソッドを実装するだけです。reuse(EnemyPools:cc.NodePool) { // 渡された管理クラスのインスタンスを取得します。get this.EnemyPools = EnemyPools; } // オブジェクトをリサイクルする関数を書く hit () { // オブジェクトプールが存在するかどうかを確認します if(this.nodePools){ // 現在のノードを元の状態に戻します this.nodePools.put(this.node); }それ以外{ // それ以外の場合はノードを直接破棄します this.node.destroy(); } } 2. 特定の時間に表示する必要があるノードを事前に作成しますプロンプトボックスなど // 定義したプレハブをプロパティインスペクタにマウントするためのプレハブを作成します @property(cc.Prefab) testPrefab:cc.Prefab = null; // このノードを表示する必要がある場合は、上記のようにプレハブの作成をコピーするだけです。let node = cc.instantiate(this.testPrefab); // 親ノードにマウントします this.node.addChild(node); 上記はすべてマウントされており、以下は動的ロード方式を採用しているため、@property(cc.Prefab)のようなマウント方式を使わなくてもロードできます。 // 以下のコールバック関数はこれを使用できないため、これに渡す変数を定義する必要があります m_this = this とします。 /* cc.loader.loadRes を使用して Prefab を動的に読み込みます。まず、assets フォルダの下に resources フォルダを作成し、その下に prefab リソースを配置します。最初のパラメータは resources 下の prefab の絶対パスです。これにより、prefab は 2 番目の関数型パラメータの prefab パラメータで取得されます。*/ [cocos ドキュメント公式サイト](https://docs.cocos.com/creator/manual/zh/scripting/load-assets.html?h=assets) cc.loader.loadRes("assets/OptionBox", 関数(err, prefab) { if(!プレハブ){ cc.log("プレハブは空です"); } var newNode = cc.instantiate(プレハブ); if(!newNode){ cc.log("ノードは空です"); } // 現在のノードの子ノードとして追加します m_this.node.addChild(newNode); 上記はプレハブを使用するための 2 つの一般的なソリューションです。たとえば、最初の方法は敵や弾丸を一括で作成するために使用されます。2 番目の方法は、繰り返し使用するシナリオや特定の状況でトリガーされるプロンプト ボックスなどのプレハブにすることもできます。 以上がcocoscreaterプレハブの詳しい説明です。cocoscreaterプレハブの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7 インストール不要の設定グラフィックチュートリアル
>>: 実行中の Docker コンテナにボリュームを動的に追加する方法
この記事では、CSS を理解し始めたばかりの人を対象に、主に HTML で clearfix と c...
この記事では、カルーセルマップの特殊効果を実現するためのJavaScriptの具体的なコードを参考ま...
目次導入説明名前の競合私有財産要約する導入シンボル変数を作成する最も簡単な方法は、Symbol() ...
すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...
Linux は、システム内のデバイス、インターフェース、ファイル、スタートアップ、アプリケーション ...
目次確認する:例の検証と組み合わせるselect クエリ ステートメントはロックされませんが、sel...
TW のメインテキスト ページは、以前は小さなモニターと低解像度のユーザーを考慮して幅が 850 ピ...
Linuxインスタンスでpipを使用する際のタイムアウト問題を解決する方法pip は最も人気のある ...
目次1. はじめに2. MVCC (マルチバージョン同時実行制御メカニズム) 2.1 繰り返し読み取...
この記事では、MySQL 5.7.17 winx64解凍版のインストールと設定方法を紹介します。具体...
Ubuntu 20.04 がリリースされ、多くの新機能が導入されましたが、慣れていない機能も多くあ...
私たちのコンピューターには、ディレクトリ、写真、ソース コードなどのファイルが保存されています。たく...
インデックスとは何ですか?インデックスは、データベース ストレージ エンジンが指定されたデータをすば...
この記事を読む前に、Volumes について予備知識を身に付けておいてください。詳細については、こち...
まずは効果を見てみましょう:この効果は非常に華やかに見えますが、原理は複雑ではありません。1 枚の花...