ハツェの真時代傾向璋

興味を持ったことを書いていく鱗片的な場所から先の未来の場

U# 入門 ③

こんばんは。ハツェです。
今回も、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 ValueOn Click On End Editといった部分にUdon BehaviorのついたGameObjectを指定し、SendCustomEventで呼びます。
昔のSDK2とそんなに大きくは変わりません。

f:id:hatuxes:20200404181744p:plain

試しに何か作って見よう

ということで今回は、ボタンを押したら床のマテリアルが変化するものを作っていきます。

スクリプト制作まで

まず、簡単な床とCanvasでボタンを配置しましょう。

f:id:hatuxes:20200404182601p:plain

そしたら、ボタンに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と入力しましょう。

f:id:hatuxes:20200404185650p:plain

これで、ボタンからChangeMaterial()関数を呼ぶようになりました。

実行

では実際にVRChatで試してみましょう!

f:id:hatuxes:20200404190009g:plain

今回はちゃんと関数を書いてやりましたが、Interact()内に処理を書いてInteract()をボタンから呼ぶなんて方法もあります。
どの方法を使うかは自由なので、好きなものを使ってみてください。
今回も、サンプルプロジェクトはGithubに置いておきます。
github.com

次回

これで入門記事自体は終了です。
次回は、おまけとしてTriggerの対応表など、豆知識を紹介します。
hatuxes.hatenablog.jp