VRC SDK3とUdonSharpの環境でIntaractを使ってオブジェクトのON OFFを切り替える


前提知識が以下のレベルでなんとなくVRC SDK3とUdonSharpを試してみた。
プログラミング : 少しできる。
Unity : VRChatの買ってきたアバターアップロードとかギミックがほとんどないワールド作るぐらい
C# : さわったことない
VRC SDK3 : さわったことない

できたもの

ありふれたミラーのスイッチ。SDK2とやり方が結構違う。

環境

Unity : 2019.4.29f1
VRChat SDK : VRCSDK3-WORLD-2021.08.11.15.16_Public
UdonSharp : v0.20.2

環境作成

今回の例

CubeにIntaractしてミラーのONとOFFを切り替えられるようにする

Unityエディタ上の操作

  1. Assets > VRCHat Examples > Prefabs にある VRCMirror をScene上に設置する。
  2. ミラーのスイッチとするキューブを作る
  3. 作ったキューブにAdd Component で Udon Behaviour を選択
  4. Program Source が Udon C# Program Assetになっていることを確認し、 New Programをクリック
  5. Create Scriptをクリック
  6. スクリプトのファイルを保存
  7. 作成したスクリプトに以下の内容を書き込む
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class mirrorSwitch : UdonSharpBehaviour
{

    //publicの変数やオブジェクトはUnityエディタから直接アクセスできるように表示される
    public GameObject mirror;

    //public override void Interact() でオブジェクトにInteract時の処理を記述できる
    public override void Interact()
    {
       // SetActive(true)でオブジェクトを有効化
       // activeSelfには現在のオブジェクトの無効化か有効化の状態が格納されている
       mirror.SetActive(!(mirror.activeSelf));
    }

}

Unityエディタ上に戻ると自動でコンパイルされる。
Mirrorという項目が追加した Udon Behaviourコンポーネントにできているのでそこにシーン上に置いたVRCMirrorをドラッグアンドドロップする。
Interaction Textにはゲームプレイ時にキューブにカーソルを合わせたときに表示するメッセージを記述する。

これで完成。

感想

UnityやVRCSDKで使えるオブジェクト等についての理解がないと何が使えるのかわからないのでつらい。
オブジェクト間のやり取りはpublicを用いてエディタ上でやるというのが前提知識がないと全然わからんかった。