💬

【VRChat】Udonをこねてオブジェクトの表示/非表示を作る~uGUI:Button~

2023/11/21に公開

ボタンの設置の仕方は↓で投稿しているので、今回はuGUI:Buttonで追加したボタンをクイックしたときに動くUdonのプログラムを作っていきます。
ちょっと長いですが、一回作ってしまえばあとは楽です。

環境

  • Windows(10)
  • VCC(2.1.6)
    • Unity(2019.4.31f1)

事前準備

  • Visual Studio(主は2019)
  • 適当なVRC Worldのプロジェクト

手順

uGUI:Buttonの配置

1. uGUI:Buttonの配置

下記の記事を参考にButtonを配置してください。

3Dオブジェクトの配置

1. Hierarchyに3Dオブジェクトを追加

  • Hierarchyで右クリックして、「3D Objects>Sphere」を追加します
  • いい感じの位置に配置してください

UdonSharpファイルの追加

1. AssetsにUdonのファイルを追加

  • Assetsフォルダ配下の任意のフォルダをクリック
  • 右クリックして、「Create>U# Script」をクリック
    ※僕はScriptというフォルダを作成して、そこにUdonのファイルを作成しています。

2. Udonに任意の名前を付けて保存

↓の画像をようにファイルが2つできます。
白い方を操作していきます。

3. U# Scriptにプログラムを追加

白い方のファイルをダブルクリックします。

↓すると、インストールされているVisual Studioが立ち上がります。

  • 下記プログラムを追加します。
test.cs
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class test : UdonSharpBehaviour
{
    [SerializeField]
    private GameObject obj; // Inspectorで消したいオブジェクトをセットします
    
    void Start()
    {
    }
    // ボタンの処理を追加します
    public void buttonClick() // ★[buttonClick]はあとで使います
    {
        // obj.activeSelfはオブジェクトのアクティブ状態を取得する
        if (obj.activeSelf)
        {
            // アクティブなら非アクティブにする
            obj.SetActive(false);
        }
        else
        {
            // 非アクティブならアクティブにする
            obj.SetActive(true);
        }
    }
}

4. U# ScriptをCubeに追加

  • 「test」をドラッグして、Hierarchy>Canvas>Buttonのところに持っていきます
  • InspectorのところにTestが表示されていればOK

5. ボタンをクリックした時に実行したい処理を設定

  1. 「On Click」にある「+」ボタンをクリック
  2. 画像のようにHierarchy>Canvas>Buttonをドラックします
  3. 「UdonBehaviour.SendCustomEvent(string)」を選択
  4. 「UdonSharpファイルの追加>3. U# Scriptにプログラムを追加」で記載した★の部分を設定

6. 表示/非表示させたいオブジェクトの設定

  • Inspector>Test>Utilities>Objに、Hierarchy>Sphereをドラックして持っていきます

結果

こんな感じで、表示/非表示が切り替わればOKです!

あとがき

Buttonは性質上設定項目が多いんですが、他のオブジェクトに割り当てられている処理を実行することができます。
あとは、遠くからクリックできるとか・・・笑

関連記事

Discussion