ボタンを押すとオブジェクトを表示・非表示するオブジェクトをワールドに配置する方法について解説
Udon スクリプト作成
サンプルのTogleGameObjectをU#に書き直し
Udon Graph
UnaryNegationは有効と無効を反転させるパネルのようです。
U#
public class TogleGameObjectBySharp : UdonSharpBehaviour
{
public GameObject targetGameObject;
public void Toggle()
{
// bool型であるtargetGameObject.activeSelfの頭に「!」を付与するとtrueとfalseを反転させる
targetGameObject.SetActive(!targetGameObject.activeSelf);
}
}
シーン作成
トグルボタンとミラーを配置します。
UIの配置
コントローラーのビームでボタンやトグルなど押すヤツを配置していきます。
おおよその手順は下記、RenderModeをWorldSpaceにしてVRC Ui Shapeコンポーネントを追加するのがミソ
- Hierarchyで右クリックメニューを開きUI→Canvasを追加
- CanvasをWorldSpaceに変更
- VRC Ui Shapeコンポーネントを追加
トグルボタンの設置
Hierarchyで右クリックメニューを開きUI->ToggleでCanvasにトグルボタン配置します。追加されるToggleとTextコンポーネントを調整します。
Toggle
トグルボタンを押したときに呼び出すメソッドをOn Value Changedに登録します。
Text
文字を綺麗に真ん中に配置するにはAligementをイジればOK
文字の大きさはBestFitを有効にすると勝手に良い感じに修正してくれるのでテキストを配置するときは下記設定がオススメかも
鏡の配置
プロジェクトにあるVRCMiirorプレハブをHierarchyに配置します。
ちなみにPlaneオブジェクトを配置してVRC Mirror Relfectionコンポーネントを追加してもミラーにならなかったので、鏡はこのプレハブを使うしかなさそうです。
Udon Behaviourコンポーネントの追加
- 適当なゲームオブジェクトにUdon Behaviourコンポーネントを追加
- targetGameObject変数に表示・非表示にしたいオブジェクト(鏡)を追加
参考文献
Low MirrorとかHigh Mirrorなどのミラーに関するパフォーマンス調整はここが下記サイトが詳しいかと思います。
VRChat 技術メモ帳 – VRC_MirrorReflection
ボタンで 表示・非表示するミラーを作成する