LoginSignup
4
3

More than 1 year has passed since last update.

Udonsharp覚書 (1)udonを導入してワールドのひな型を作るまで

Last updated at Posted at 2022-10-14

背景

最近Udonsharpについて触れるようになり、こんなワールドを作るようになりました。
https://vrchat.com/home/world/wrld_d5b2d4f4-d2ac-4be5-a356-c28c24e8072e

そろそろ覚書したいことも増えてきたため、このような形にQiitaに書き留めていきます。
まずははじめの一歩として、ワールドひな型の手順を簡潔に覚書。

本記事の前提

  • 自身がVRCユーザであり、TrustRunkがUser以上である
  • VRCでワールドを上げたことがない。ひな型を上げるまでの流れが知りたい
  • アバターを上げたことはあり、なんとなくUnityの操作を知っている

本記事の目的・概要

  • VRCSDKのダウンロード・インポート
  • VRC Worldのひな型系の作成
  • Udonsharpのダウンロード・インポート / 簡単なスクリプトの作成
  • ワールドひな型のアップロード

(想定作業時間) ~30分

記事について、記載していく内容について
誤り・改善等ありましたらコメントをお願いします

1. VRCSDKのダウンロード

https://vrchat.com/home/download
上記ページより、VRCSDKをダウンロード。
アバター・ワールドでそれぞれunitypackageが別れている。VRChat Worlds のものをダウンロード

image.png

2. UdonSharpのダウンロード

https://github.com/MerlinVR/UdonSharp/releases
上記リポジトリのページより、最新のunitypackageをダウンロードする。

udon/udonsharpについての概略については 下記ページなどを参考にするとよいと思います。

UdonSharp は、C# を Udon アセンブリにコンパイルするコンパイラです。UdonSharp は現在、C# 言語仕様のどのバージョンにも準拠していないため、実装されていないものや動作しないものが多数あります。

3. VRC Worldのひな型系の作成

3-1 VRCSDKのインポート

「VRCSDKのダウンロード」にてダウンロードしたunitypackageをダブルクリックし、AssetをImportする。
image.png

3-2 udonsharpのインポート

「Udonsharpのダウンロード」にてダウンロードしたunitypackageをダブルクリックし、AssetをImportする
image.png

これでごく最低限、必要なものが整いました

4. ワールドひな型のアップロード

ここでは、下記の要素を備えた最低限のワールドひな型としてのSceneを作成し、VRCSDKを用いてアップロードまですることを目的とします

足場の作成

足場を作成しなければ、永遠に落ち続けるため移動すらままならないため、まずはこれを作成します。
最初に、全てのオブジェクトを紐づけるためのEmpty(空オブジェクト)となるworldを、メニューバーの「Create Empty」より作成します。
この配下に同じくメニューバーの「GameObject」>「3D Object」から 「plane」を選択し配置します。
image.png

リスポーン地点の作成(VRCworld)

Assets/VRChat Examples/Prefabsを参照し、その中のVRCWorldをヒエラルキー上に配置します。
このアセットの位置・視点がそのままリスポーン時の情報となります。
(下記画像では、青(z)軸の向きに顔を向ける形でリスポーンするようになります)

image.png

また、このVRCWorldには pipeline managerと同様に、VRCSceneDiscripterというComponentが紐づいています。
AvatarのアップロードにおけるVRCAvatarDiscriperと同様で、ここにVRCへのアップロード対象となるワールドの情報・紐づくマテリアルの情報などが記載されます。
(ここ以外に複数のSceneDiscripterやpipeline managerを記載していると、アップロードに不具合がでることがありました。意図しない挙動を示した際は、この情報が手引きとなることがあるかもしれません)

このタイミングでは、Unity Versionとして2018の物が記載されていますが、手動で変更する必要はありません。
後述する VRChat Scene Setupにて 自動で今使用しているUnityのバージョン情報へ変換されます。
image.png

udon behaviorのテスト

ここでは、入室音として簡単なudonの挙動をテストします。
(参考: https://qiita.com/Milcia/items/242b240816a03fc9928e)

udon scriptの作成

Assets配下へまずは適当なフォルダを作成します
image.png

この配下に、Udon C# Program AssetをCreateします
image.png

次に、このAssetに紐づくudonsharpのソースファイルを作成します
assetファイルのInspectorより、Create Scriptを押下し、Scriptフォルダへcsファイルを作成します。
(ファイル名称はいいように変えておきましょう。今回はEnteringSoundとしました。)
image.png

そして実際に、このcsファイルにudonの挙動を記載していきます

using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class EnteringSound : UdonSharpBehaviour
{
    //音声ファイル変数。
    public AudioSource audioSource;

    //「紐づけたアセットが読み込まれたとき」の動き
    void Start()
    {
        //unityから別途紐づけたAudioSourceファイルを読み込む
        audioSource = GetComponent<AudioSource>();
        audioSource.Play();
    }
}

最後に、このudon scriptをscene上のオブジェクトに紐づけ、実際に動きがもたせられるようにします。
今回は入室音としての動きなので、worldに対し、下記のようにudon behavior componentを紐づけます
image.png

紐づけると、Inspectorがこのような表示になります。
image.png

この「Program Source」の部分へ、先ほど作成した EnteringSound.assetファイルをD&Dし、紐づけてください
紐づけに成功すると、このような表示になります
image.png

ここまでのヒエラルキーの構造・Script配下の中身は 下記画像の通りです
image.png

AudioSourceファイルの作成

入室音となる音声素材を作成します。

mp3の入手

https://soundeffect-lab.info/sound/voice/line-girl1.html
こちらより、任意の好きなファイルをDLします。(筆者は「こんばんは」をDLしました)
とりあえずはどこにおいても良いですが、ひとまずはAssets/Scriptへ配置します
image.png

audioSourceファイルとして利用

worldのヒエラルキー上にCreate Emptyし、ここにAudio SourceComponentを紐づけます
image.png

この後、AudioClipの部分へ、先ほどの音声素材をD&Dしてください。
image.png

最後に、Worldのudon behaviorへこのAudio Sourceを紐づければOKです
image.png

VRChat Scene Setup

初回作成時、VRCSDKが下記のような表示を出すことがあります。
VRCに適したSceneの設定を自動で行ってくれるための表示で、特別な意図がなければこのままSetup Layers -> Do it!を押下してください
image.png

image.png

ローカルビルド + テスト

「とりあえず意図通り動いてるか確認したい」程度の目的であれば、ワールドをVRCに上げずとも、自身のローカル環境で挙動を確認することができます。
下記 Build & Testをクリックし、VRC Clientを起動してください
image.png

このように、VRChatで作成中のワールドを起動させることができます。
「こんばんは」と音がすれば 挙動はOK!
後はアバターと同じように アップロードしちゃいましょう
image.png

今後の予定

気が向けば、Udonsharpに関する他の記事(Canvasを使ったUIの作成 / 麻雀ワールドに関するもろもろなど)を記載していきます...!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3