UDON 開発環境構築

#概要
この記事は、ゼロから環境を構築して、UDONでScriptを書いて、キューブをY軸中心に回転させる手順を示すものである。
#経緯
何やらUDONと言うプログラミング言語があるらしい。
VRChatで偶に遊んでいる私が、Unityでのゲーム作りを勉強するついでに、ちょろっとやってみようと考えた。
PCも新調した事だし、UDONでの開発環境構築と、その確認をするところまでやってみようではないか。

#環境構築
まず初めに、必要なもののダウンロード及びインストールを行う。
##ダウンロード及びインストール一覧(2020年5月2日現在)
必要なソフトとインストール先の一覧は以下に示す。
特に詰まることもないと思われるため、詳細は割愛する。

１．UnityHub
　以下のページからダウンロードしてインストール
　https://unity3d.com/jp/get-unity/download

２．Unity 2018.4.20f1
　UnityHubインストール後、以下をブラウザのアドレスバーに入力して実行
　unityhub://2018.4.20f1/008688490035

３．VRCHAT SDK3 + UDON [LIVE ALPHA]
　VRChat公式ページからダウンロード（要ログイン）
　https://vrchat.com/home/download

４．UdonSharp_v0.15.9.unitypackage
　GitHubからダウンロード。
　https://github.com/Merlin-san/UdonSharp/releases
　

##VRChatSDK及びUdonSharpを導入したプロジェクトの作成
Unityで新規プロジェクトを作成し、SDKを導入する。

１．プロジェクト作成
　UnityHub画面左の「プロジェクト」を選択し、「新規作成」をクリックする。
　もしバージョンの選択画面が出現すれば「Unity 2018.4.20f1」を選択する。
![Unity_新規プロジェクト作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/95ce60ea-97e4-b36d-7677-62d85844e97c.png)

２．テンプレートの選択
　テンプレートを「３D」プロジェクト名及び保存先を任意に設定し「作成」をクリックする。
![Unity_新規プロジェクト作成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/20571cd4-1bfa-1549-09a5-be93ed729a79.png)

注意！
アップデートを促す画面が出現するが、アップデートしないように。VRChat向けに何かを作ることが目的ならば、公式からバージョン変更のお触れが出るまではそのままのバージョンで使い続けること。
「Check for Update」のチェックを外して「Skip new version」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/e3a71602-6fbf-8d29-fdaa-d8b9760adef8.png)

３．VRCHAT SDK3 + UDON [LIVE ALPHA]の導入
　対象のファイルをAssetsにドラッグアンドドロップでも良いのだが、今回はマウスを使わなくてもできる方法で導入する。
　Unity画面上の左上から「Assets」→「ImportPackge」→「CustomPackage」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/2214e189-1279-590f-89f5-c2e544cf59de.png)

　「ダウンロード及びインストール一覧」の章でダウンロードした「VRCSDK3-UDON～」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/b270080e-7a26-bf03-43b9-624180c15f9d.png)

４．インポート内容の確認
　暫く待機（結構長かった）していたらインポート確認の画面が出現するので「Import」をクリックする。
　今回はデフォルトだが、もし何か手を加える必要があればここで設定を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/94b310a3-0262-25c7-1a0f-54040b901075.png)

暫く待てば（これが結構長い）インポートが完了して「UDONのさらなる進展のためにバグの報告にご協力ください。ついでにこれまでのUDONの歴史はこんな感じです」という趣旨のポップアップが出現する。とりあえず今回はそのポップアップは無視して閉じた。

５．UdonSharpの導入
　やることはUDONそのものの導入と一緒で、「Assets」→「ImportPackge」→「CustomPackage」を選択して「UdonSharp_v0.15.9.unitypackage」をインポートする。

#UDONをこねてみる
当初は「HellowWorld」とか書き出そうとか思っていたが、Unityの標準出力を知らないため、「U#でキューブを回転させる」ことを目標に実施する。

##scriptファイルのアタッチ
１．Cubeを作成
　デフォルトだと画面左の「Hierarchy」タブで右クリックして「3DObject」→「Cube」を選択して作成

２．udon Behaviourの追加
　「Hierarchy」タブで「Cube」を選択して「Inspector」タブの「Add Component」から「udon Behaviour」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/c2147015-8f22-d72d-5d65-79470e20c367.png)

３．Udon C# Program Assetを選択して、New Programをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/68a9b5e5-2642-b4db-8c61-8d80d308ce48.png)


４．アタッチ
「Create Script」をクリック。保存先・ファイル名を決定してC#ファイルを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624466/5eb31fc4-fff1-4477-3c90-c0413db3236a.png)

##script編集
作成されたscriptファイルを開いて、以下の通りに書き換えた。

```ruby:qiita.rb
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;

public class CubeRoll : UdonSharpBehaviour
{
    void Update()
    {
        transform.Rotate(new Vector3(0, 5, 0));
    }
}
```
雑解説
・void Update()
　毎フレーム呼び出されるメソッド。
・transform.Rotate(new Vector3(0, 5, 0));
　Y軸に5度回転する

・全部合わせて
　箱が毎フレームY軸に5度回転する

これを上書き保存して「Force Compile Script」を実行。

##完成
Unityでキューブが移るようにカメラを調整して実行すれば、キューブが回転している様子が映って完了となる。

#参考にさせていただきましたサイト一覧
Getting Started with Udon
https://ask.vrchat.com/t/getting-started-with-udon/80

U# 入門 ①
https://hatuxes.hatenablog.jp/entry/2020/04/05/013310