VRChatの範囲でUnityを学ぼう!
アバターのアップロード、ギミックの制作、ワールドの制作…VRChat(またはそれに準ずるアレコレ)において、私たちはUnityをほぼ確実に使う必要があります。
ですがぶっちゃけ、「Unityの用語で(よく聞くけど)分からんもの」は結構たくさんあると思います。
ここではそれについてVRChatで取り扱われやすい範囲に絞ってザックリ解説していこう、そんな感じのnoteとなっております。
なお、キチンと詳しい情報はUnityの公式ドキュメントを読むのが良いです。
ここではザックリで説明する感じなので。
Unity起動編
プロジェクト
とりあえず、作業にはプロジェクトが必要になります。
このプロジェクトと呼ばれるものは、いわば作業机のようなものとなります。
例えば「アバター毎にプロジェクトを分けてるんだ~」というタイプの方は、言ってしまえば「プラモデル毎に作業机を分けて作業している」というイメージになります。
ちなみに、「同じデータ(アニメーションファイルとか)を数多くのアバターで使い回したい」という場合はプロジェクトをまとめるのも一つの手ですが、可能な限りプロジェクトは用途に応じて小分けにしたほうがUnityの起動が早くなります。
エクスプローラーで覗く、プロジェクトの中身
とりあえずは以下の認識で良いと思います。
・Assets:みなさんがインポートしたものは基本的にここに入ります
・Library:インポートしたものをビルドしたものがここに入ります
・Logs:なんかログを吐きます。
・Packages:Unity内のパッケージの取り扱い方とか書いてます。 ※最近はこちらにインポートしたものが入るケースも多いです。
・ProjectSettings:プロジェクト上の環境設定とか保管してます
基本的に気にするべきはAssetsフォルダだけで、他は「どこかにプロジェクトのバックアップ取っておきたいな~」という時にまとめてコピーしておくくらいの認識でだいたい大丈夫です。
プロジェクト立ち上げ編
ヒエラルキーやインスペクターについて
ヒエラルキーは「シーン(画像のカメラのアイコンが表示されているところ)」に置いてあるオブジェクトを管理している領域となります。
そして、なんか「オブジェクトの位置」を調整したり、「マテリアルの設定」を変えたり色々できるのが「インスペクター」です。
そして、「ヒエラルキー」と「各オブジェクトのインスペクター」の内容が反映されるのが「シーン」になります。
※正確には更に細かいのがあるけれど、そういうイメージでお願いします
つまるところ基本的な作業は「ヒエラルキー」と「インスペクター(詳細設定が見れる場所)」で行い、それを「シーン」で確認する、というフローになります。
シーンファイル
たまに購入したアバターによってはこのファイルがインポートされることがあります。
このファイルは「作業をしたヒエラルキーをそっくりそのまま読み出す(保存できる)」ものになります。
別記事で説明しているプレハブとほぼ同じものです。
ただ、プレハブと異なる点は「このファイルをダブルクリックするだけ」で「アップロードがそのまま可能なヒエラルキーの状態」に持っていけるところが強みです。
なので、「買って読み込んで改変、そしてすぐアップロードできる!」というタイプのワールド系アセットはこちらで提供されていることも多いです。
ちなみに、Unityを終了する際に見かけるかもしれない下記のエラーメッセージは「このシーンファイルを保存してないよ?(ヒエラルキーの内容消えちゃうよ?!)」という警告になります。
他のファイルってどうなってるの
「シーン上に配置したデータ」の設定情報は「シーンファイル」に記録されますが、その他の「マテリアル」「EXメニューなどのアレコレ」「アニメーターコントローラー」などのファイルは編集時点でそのまま保存されます。
ただし、一部の「FBXファイル」や「テクスチャ(画像)ファイル」については下記画像のような「Apply」ボタンを押さないと保存されません。
プロジェクト作業編
スクリプトのあれこれについて
Unityは仕様としてプロジェクト内の全てのデータを読み込んでから動作します。
これは前述の「3Dモデルのデータ」「マテリアル」はもちろん、「便利な改変ツール(を動かすために必要なスクリプト)」など全てのデータを読み込んでおり、最終的にUnity上に全てを展開します。
※VRCSDKもUnityに読み込んでもらってメニューバーに表示されます
この仕様のため例えば「スクリプト同士で喧嘩してしまった」「このスクリプトが欲しがっている別のスクリプトが存在しない」「ちゃんと読み込めないスクリプトをインポートした」といった事態が発生するとUnityは「その時点でスクリプトの読み込みを止めます」。
そうやってスクリプトの読み込みが止まると「VRCSDKがなんかちゃんと表示されない」、「インポートした改変ツールが表示されず使えない」といった症状の他、最終的になんかアップロードとか揺れ物の動作確認が出来なくなった…という事象に繋がります。
…そしてそんな状態でUnityの再生ボタンを押すと十中八九、以下のようなエラーメッセージが出てきます。
こちらのエラーメッセージは「playmode(再生モード)にする前に全部のコンパイルエラーを修正してね!」という内容になります。
要するに「改変ツール同士が喧嘩しあってる可能性があるから(コンソールを見たうえで)それをどうにかしてくれよな!!」という事です。
アニメーターコントローラーをシンプルに学ぼう
「FXレイヤーに…」という言葉が出てくると十中八九触ることになる「アニメーターコントローラー」。
こちらは各レイヤー(階層)毎に順番で「今は△のパラメータが○○だからこのアニメーションを実行してるよ!」という感じの処理を行っています。
気をつけて欲しいところはこのアニメーションの実行処理は上から順番に「(基本的に)上書きされながら」実行されるということ。
もちろん、実際に上書きされるかどうかはアニメーションの作り次第であるため「全てが上書きされてしまう」訳では無いという事は覚えておこう。
なので、例えば一番上のレイヤーに「デフォルト表情のレイヤーを用意」し、あとは後ろに表情の設定を行っていくことで「表情を取っているときはその表情」、それ以外ならば「デフォルトの表情」という感じで表情を切り替えたりも出来る。