Cluster Scriptに新しい機能が追加されました!
子オブジェクトの表示・非表示の状態を切り替えたり、取得することができるようになります。
今回はこちらの機能の使い方を紹介していきます。
追加されたメソッド
- setEnabled
- getEnabled
- SubNodeの現在の有効状態を取得します。
setEnabledで指定された値ではなく、SubNodeの現在の有効状態が返されることに留意してください。
- SubNodeの現在の有効状態を取得します。
- getTotalEnabled
スクリプトの例
こちらで配布しているサンプルプロジェクトのアセットを使って、クリックすると消えるドアをつくります。
- Assets/ClusterTutorial/Prefabs/1-1から、ドアのない穴のあいた壁を設置してください。
- 続いてその壁をHierarchy上で展開し、DoorRootにドアのプレハブをドラッグアンドドロップして子オブジェクトにします。
- ちょうど壁の穴にはまるようにドアが設置されます。

- 壁を選択し、InspectorのAdd ComponentからScriptable Itemを追加しましょう。
- Source Codeの欄に以下のスクリプトを入力します。
.jsファイルに保存してSource Code Asset欄に指定する方法でも構いません。
1行目の
”Door-1”
はHierarchy上のドアのオブジェクト名に合わせて、必要に応じて書き換えてください。
const door = $.subNode("Door-1"); // 子オブジェクトのドアを取得
$.onInteract(() => {
let close = $.state.close;
if(close == null) close = door.getEnabled(); // 初期化されていなければ、現在のアクティブ状態で初期化
close = !close; // closeの値がtrueならfalseに、falseならtrueに変える
door.setEnabled(close); // ドアのアクティブ状態を設定(closeがtrueなら表示、falseなら非表示になる)
$.state.close = close; // closeの値を保存
});

アップロードして確かめてみましょう。壁をクリックするたびに、ドアが出たり消えたりします。

アイテム自身のアクティブ状態を切り替えることはできません。
$.subNodeで取得した子オブジェクトのアクティブ状態が変更できます。
今回の例ではクリックするたびにアクティブ状態を入れ替えましたが、応用すれば一定回数クリックすると開くドアや、特定の時間帯だけ現れるオブジェクトなどもつくることができます。
ソースコードを改変して、自分なりに工夫してみましょう!