見出し画像

スクリプトから Unity コンポーネントのプロパティにアクセスできるようになりました!他【Cluster Creator Kit v2.23.0 リリースノート】

こんにちは、プロダクトマネージャーの Smith です。

メタバースプラットフォーム cluster では、クリエイターのみなさんの創造力をより加速できるように制作環境の改善や新機能の追加を行っています。
この記事では 9/9 の Cluster Creator Kit v2.23.0 で新たに提供される機能の仕様を紹介します。


Creator Kit 2.23.0 の利用方法

今回のリリースに含まれる機能を利用するためには cluster アプリのアップデートが必要です。
今回のアップデートは Creator Kit の更新がありますのでアップデートをお願いします。
Creator Kit のアップデート手順についてはコチラをご参照ください。

Creator Kit 2.23.0 のリリース内容

機能追加

  • Unity Component Bindings (ベータ) [CCK]

  • PlayerStorage (ベータ) [CCK]

  • PlayerScript からの Player Local UI オブジェクトの参照 (ベータ) [CCK]

  • ProductDisplayItem のアバター対応 [CCK]

仕様変更

  • Creator Kit 利用状況データ取得方法の変更

機能追加

Unity Component Bindings (ベータ) [CCK]

スクリプトから一部の Unity コンポーネントのプロパティを読み書きができる API を追加しました。
ClusterScript と PlayerScript のそれぞれに専用の API が追加されています。

  • ClusterScript.getUnityComponent()

  • SubNode.getUnityComponent()

  • PlayerLocalObject.getUnityComponent()

取得できた UnityComponent インスタンスからは、コンポーネントのプロパティの値の読み書きができます。
下記は ScriptableItem がアタッチされている GameObject の Transform を取得し、localScale を 変更する例です。

$.onInteract(() => {
  let transform = $.getUnityComponent("Transform");
  transform.unityProp.localScale = new Vector3(2, 2, 2);
});

利用可能な Unity コンポーネントとプロパティはスクリプトリファレンスの下記のページに記載されていますのでご参照ください。

PlayerStorage (ベータ) [CCK]

PlayerScript から、そのプレイヤーに紐付くデータを読み書きできるようになりました。
扱える型は PlayerScriptSendable として定義されています。
詳細はスクリプトリファレンスの PlayerScriptSendable のページを参照してください。

下記は HUD v2 のボタン毎に押下した数をカウントし、 onReceive でメッセージを受信した際に各カウントを保存する例です。

let savedData = null;

_.onStart(() => {
  _.showButton(0, _.iconAsset("A"));
  _.showButton(1, _.iconAsset("B"));
  _.showButton(2, _.iconAsset("C"));

  savedData = _.getPlayerStorageData();
  if (!savedData) {
    savedData = {
      countA: 0,
      countB: 0,
      countC: 0,
    };
  }
});

_.onButton(0, (isDown) => {
  if (isDown) {
    savedData.countA++;
  }
});
_.onButton(1, (isDown) => {
  if (isDown) {
    savedData.countB++;
  }
});
_.onButton(2, (isDown) => {
  if (isDown) {
    savedData.countC++;
  }
});

_.onReceive((messageType, arg, sender) => {
  if (messageType === "save") {
    _.setPlayerStorageData(savedData);
  }
});

PlayerScript からの Player Local UI オブジェクトの参照 (ベータ) [CCK]

PlayerLocalUI で配置した GameObject を参照するために、新たなコンポーネントと、コンポーネントを経由して GameObject を参照するための API を追加しました。

  • コンポーネント

    • PlayerLocalObjectReferenceList

  • API

    • PlayerScript.playerLocalObject()

PlayerScript.playerLocalObject() を利用することで PlayerLocalObjectPlayer のインスタンスを取得できます。
PlayerLocalObjectPlayer からは子要素にあるオブジェクトを探索したり、有効無効を切り替えたり、任意の UnityComponent オブジェクトを取得できます。
PlayerLocalObjectPlayer のリファレンスは下記を参照してください。

下記はメッセージを受信した時に PlayerLocalObjectReferenceList に登録されたオブジェクトの子要素から Text コンポーネントを持っている GameObject を取得し、Text コンポーネントの text の値を受信した値に書き換える例です。

_.onReceive((messageType, arg, sender) => {
  if (messageType === "changeText") {
    const container = _.playerLocalObject("TextContainer");
    const text = container.findObject("TextObject");
    text.getUnityComponent("Text").text = `${arg}`;
  }
});

ProductDisplayItem のアバター対応[CCK]

ProductDisplayItem で新たにアバターを展示できるようになりました。
アクセサリーなど他の商品と同じ様にアバターの商品 ID を設定することで展示できます。
商品 ID が誤っている場合は何も表示されません。

展示されたアバターをクリックすることでアバター詳細ページを開くことができます。

商品 ID の取得方法
アバターの商品 ID は、商品管理画面で該当するアバターの情報を開いている時の URL に含まれる文字列を利用してください。

https://cluster.mu/account/products/avatars/<商品 ID>

該当の画面は下記のような画面です。

例)
URL が以下の場合、

https://cluster.mu/account/products/avatars/01234567-89ab-cdef-0123-456789abcdef

入力する商品 ID は下記となります。

01234567-89ab-cdef-0123-456789abcdef

アバター販売のためのひと通りの手順は Creators Guide で詳しく解説しているのでこちらも参照してください。

仕様変更

Creator Kit 利用状況データ取得方法の変更

Creator Kit を利用している際の利用状況データ取得の方法が変更されました。
これまで設定画面から任意でのデータ取得としていましたが、個人情報を取得していないこと、及び収集データの精度が低く Creator Kit の改善が難しかったことから、今回のリリースから一律で利用状況のデータを取得するように変更しました。
取得されるようになるデータには下記のようなものが含まれます。

  • エディタ上での再生時間

  • Creator Kit のアップデート状況

  • ワールドのアップロードにかかった時間

  • Cluster メニューの利用状況

  • Creator Kit の UI に表示されているリンクが参考にされている数

ご意見・ご感想お待ちしています

cluster は、みなさんが楽しくバーチャル空間で創造できるように様々な改善を行っています。
Discord ではみなさんの要望を投稿したり、クリエイターさん同士でお互いの創作活動を支え合える場所を設けていますので、ぜひご活用ください!

Discordサーバー: Creator Community のご案内
https://docs.cluster.mu/creatorkit/support/creator-community/