あなたの世界を作りなさい
スクリプティング

$ref と $unref

5min
その 参照 と 出力 キーワードは、c#で変数や構造体をメソッドに渡す際に使用されます。 typescriptでは、これらのキーワードは利用できませんが、zepetoscriptでは、次のように同様の機能を実現できます: $ref と $unref 。 関数 説明 $ref(x?\ t) $ref パラメータの参照を作成します $unref(x $ref)\ t パラメータの参照を解放し、元の値を返します 例として、次のようにシーンを設定しましょう: シーンに3dオブジェクト、キューブを追加します。 追加したキューブのインスペクターで、「コンポーネントを追加」をクリックし、rigidbodyを追加します。 シーンに空のgameobjectを追加します。 以下のrefsampleスクリプトを書き、ステップ3で作成したgameobjectに追加します。 import { gameobject, rigidbody } from 'unityengine' import { zepetoscriptbehaviour } from 'zepeto script' import testscript from ' /testscript'; export default class refsample extends zepetoscriptbehaviour { start() { // "cube"という名前のgameobjectを取得 const testobject = gameobject find("cube"); // "cube"オブジェクトからrigidbodyコンポーネントを取得 const testcomponent = gameobject find("cube") getcomponent\<rigidbody>(); // "cube"オブジェクトからtestscriptコンポーネントを取得 const testscript = gameobject find("cube") getcomponent\<testscript>(); // コンポーネントとオブジェクトへの参照を作成 let tempobj = $ref(testobject); let tempcomponent = $ref(testcomponent); let tempscript = $ref(testscript); // rigidbodyコンポーネントがnullでないか確認 if(tempcomponent != null) { // その参照の実際の値にアクセス let component = $unref(tempcomponent); console log(`コンポーネント名 ${component}`); } // testscriptコンポーネントがnullでないか確認 if(tempscript != null) { // その参照の実際の値にアクセス let script = $unref(tempscript); script dotest(); } // gameobject参照がnullでないか確認 if(tempobj != null) { // その参照の実際の値にアクセス let objname = $unref(tempobj); console log(`tempobj名 ${objname name}`); } } } 別のzepetoscriptを作成し、以下のtestscriptを書きます。 import { zepetoscriptbehaviour } from 'zepeto script' export default class testscript extends zepetoscriptbehaviour { dotest() { console log(`testscriptのdotest()が実行されました。`); } } testscriptをcubeのinspectorにドラッグして接続します。 \[▶︎(再生)]ボタンをクリックして結果を観察します。 コンソールログウィンドウでオブジェクト、rigidbodyコンポーネント、zepetoscriptコンポーネントの参照の成功を確認できます。