プレハブプレハブとは何でしょうか? 文字通り、使用前に事前に作成されたノード リソースを意味します。そのプロパティは通常のノードと同じです。事前に作成され、まだ表示されていない通常のノードと見なすことができます。 プレハブの作り方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 コンテナにボリュームを動的に追加する方法
この記事では、MySQL 5.7.17 winx64解凍版のインストールと設定方法を紹介します。具体...
目次1. 問題の背景: 2. 問題の原因: 3. 問題解決:要約: 1. 問題の背景: window...
目次1. DOMとは何か2. 要素を選択する3. getElementById() 4. クエリセレ...
新しいserver.jsを作成する糸初期化 -y 糸を追加エクスプレスノードモン -D var ex...
これまでの数年間、私はいわゆる「設計仕様」についてかなりの数の執筆やコンサルティングを行ってきました...
居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...
<textarea></textarea> は、複数行を入力できるテキスト ...
1. 圧縮と包装の概要一般的な圧縮ファイルウィンドウズ .rar .zip .7z Linux .z...
序文この記事では主に、MySQL で大規模なデータ テーブルのコピーの効率を向上させることに関する関...
導入:従来の画像検証コードと比較して、スライダー検証コードには次の利点があります。サーバーは検証コー...
1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...
文章のスタイルでは、このような状況がよく見られます コードは次のとおりです <div styl...
コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...
序文大規模なフロントエンドの開発に伴い、UI フレームワークが次々と登場し、フロントエンド開発におけ...
HTML入門ハイパーテキスト マークアップ言語: ハイパーテキスト マークアップ言語ハイパーテキスト...