こんばんは。ハツェです。
今回も、Udonをスクリプトで制作するための記事を書いていきます。
今回はUIのEventでUdon処理を呼ぶ方法について書いていきます。
動作環境は、Unity : 2018.4.20f1、VRCSDK : 2021.05.17.12.52、U# : v0.19.11です。
目次
前回
前回は、変数操作と同期について紹介しました。
hatuxes.hatenablog.jp
今回の概要
今回はUIから関数を呼ぶ方法について紹介します。
内容としてはシンプルなので短めになります。
UIからの処理を同期させたい時は、前回の記事を参考にしてください。
UIから関数を呼ぶ方法
UIから処理を実行する方法は次の通りです。
uGUIのOn Change Value
やOn Click
On End Edit
といった部分にUdon BehaviorのついたGameObjectを指定し、SendCustomEvent
で呼びます。
昔のSDK2とそんなに大きくは変わりません。
試しに何か作って見よう
ということで今回は、ボタンを押したら床のマテリアルが変化するものを作っていきます。
スクリプト制作まで
まず、簡単な床とCanvasでボタンを配置しましょう。
そしたら、ボタンにUdon Behaviorをアタッチしてスクリプトを作成します。
今回は簡単に以下のようなものにします。
using UdonSharp; using UnityEngine; using VRC.SDKBase; using VRC.Udon; public class MaterialChange : UdonSharpBehaviour { public MeshRenderer Ground; public Material BeforeMaterial; public Material AfterMaterial; void Start() { Ground.sharedMaterial = BeforeMaterial; } public void ChangeMaterial() { //ボタンによるマテリアル更新 Ground.sharedMaterial = Ground.sharedMaterial == BeforeMaterial ? AfterMaterial : BeforeMaterial; } }
非常にシンプルですね。
一応補足をすると、Material.sharedMaterial
というのは、MeshRendererにアタッチされているマテリアルをcloneせずに使うという感じです。
組んだ関数をボタンから呼ぶ
今度は先程のChangeMaterial()
をボタンから呼んでいきます。
On Click()
の所にボタン自身をD&Dしてきましょう。
そして、UdonBehavior.SendCustomEvent
を選択し、ChangeMaterial
と入力しましょう。
これで、ボタンからChangeMaterial()
関数を呼ぶようになりました。
実行
では実際にVRChatで試してみましょう!
今回はちゃんと関数を書いてやりましたが、Interact()
内に処理を書いてInteract()
をボタンから呼ぶなんて方法もあります。
どの方法を使うかは自由なので、好きなものを使ってみてください。
今回も、サンプルプロジェクトはGithubに置いておきます。
github.com
次回
これで入門記事自体は終了です。
次回は、おまけとしてTriggerの対応表など、豆知識を紹介します。
hatuxes.hatenablog.jp