【初心者向け】VRC生活が楽になる!Unity整理整頓のススメ
(諸事情により記事を消しましたが修正して再掲しました)
0.まえがき
皆さん、VRC生活、楽しんでいらっしゃいますか?
VRC生活の醍醐味の一つに、改変がありますが、UnityのProject整理、面倒くさくないですか?例えば、衣装ごとにProjectを作ったりすると・・・

こういう形で衣装ごとにProjectを作成するのは、一見分かりやすい作り方なんですが、結構デメリットも多くて、例えば、
新しいギミックの追加や、表情改変などを行う時に、衣装パターンの数だけ「Unity上で編集→アップロード→Unityを閉じる」を繰り返さないといけない
各プロジェクトに同じアバター素体やギミックなどのデータを重複して格納することになるため、HDDやSSDをより圧迫する
といった感じで、工数的にもPC環境的にもあまり良い状態とは言えません。
これを機にUnityの整理整頓、やってみませんか?
1.ProjectとSceneの整理整頓
整理整頓の前に、Unityに関する用語のおさらいから。
ざっくり言うと、こんな感じです。
Project・・・SceneとAssetsを含む、全体のデータセット
Scene・・・Unityを開いた時に表示される3D画面のこと
Assets・・・アバター素体や衣装などのデータが保管されている場所
衣装ごとにProjectを作成した場合、あなたのHDDやSSDは下図のような状態になっています。(厳密には、SceneファイルはAssetsフォルダの中にありますが、分かりやすくするため分けて表示しています)

上図のとおり、同じアバター素体やギミックなどが別のフォルダに重複して存在するため、HDDやSSDをより圧迫している状態です。
ではどう解決するか?自分は下図のような構成にしています。

ちなみに、1つのSceneに全ての衣装パターンをまとめるということもできますが、Sceneのデータサイズが概ね100~200KBと軽量であり、まとめることのメリットが薄い反面、Unity画面で複数のアバターを同時に表示すると動作がカクつくといったデメリットがあるため、あまりオススメできません。
なお、Sceneの追加は、Unity画面を開いた後、画面上部のメニューバーから、File→New Sceneを選べばできます。既に作ってあるSceneをフォルダからコピペするのでもOKです。
2.Prefab Variantを利用したオリジナル改変用素体の作成
2-1.Prefab Variantとは?
さて、ProjectとSceneを整理したことにより、HDDやSSDへの圧迫の課題はクリアできましたが、
新しいギミックの追加や、表情改変などを行う時に、衣装パターンの数だけ「Unity上で編集→アップロード→Unityを閉じる」を繰り返さないといけない
という課題はクリアできていません。ここで便利なのが、Prefab Variantです。Prefab Variantには、以下3点の特徴があります。
①親となるPrefabが指定されており、親Prefabに変更が生じた場合はVariant側にも自動的に反映される
→BOOTHショップでアバターの更新ファイルが配られた際、Unity上で差し替えを行えば、Variant側にも自動的に反映される
②Variant側で独自に変更・追加した部分(マテリアル、ギミック、シェイプキーの数値など)は、親を更新しても上書きされずに保持される
→①で差し替えを行っても、改変による変更内容はそのままなので、同じ作業を再度行う必要はない
③Variantに変更を加えた場合、そのVariantを使用するアバターに変更を一括で反映できる(Override機能)
→一旦Variantを作成した後に、「あ、このギミックを全部の衣装パターンで追加したい!」となっても、大本のVariantに追加すれば、全ての衣装パターンに一括で反映される
特に影響が大きいのが③です。これにより、全部の衣装パターンに共通する編集作業は大本のVariantのみで行えば全て済むことになり、後は衣装パターンごとのSceneを開いてアップロードをすれば終わります。
2-2.オリジナル改変用素体の作り方
では、実際の画面をもとに、オリジナル改変用素体の作り方について説明していきます。
今回は、皆さんご存じSioちゃんをベースにします。
今回、オリジナル改変用素体を作成するにあたり実施する作業は下記のとおりです。もちろん、ご自身の改変の方針次第で、内容に変更を加えても全然OKです。
デフォルトの獣耳や髪など、使わないパーツは削除する
体型、肌マテリアル、表情等の改変を行う
全ての衣装パターンで共通して使うギミックを入れる
エクスプレッションメニューの整理を行う
まずは、Unity上に素体を置きます。この時、オリジナル改変用素体であることが分かるように、Hierarchy上の素体の名前を変えておくと良いでしょう。

その後、Hierarchy上の素体をそのまま画面下部のProject画面にドラッグ&ドロップします。

この時、ポップアップで「オリジナルのPrefabか、Prefab Variantのどちらで保存しますか?」(ざっくり和訳)と聞かれるので、必ずPrefab Variantで保存してください。(ちなみに、Sioの場合は、公式が改変用のPrefab Variantを用意してくれているので、コピペして名前を変えればOKです。)
次に、デフォルト素体のうち、獣耳や髪など、使わないパーツを削除していきます。これは通常の改変と同じようにやっていけばOKです。

次に、体型・肌マテリアル・表情の改変を行っていきます。今回は、モデル体型・ダウナー系の感じにまとめました。

ちなみに、自分が改変を行う際には、衣装・髪・ギミックの整理を行うため、「衣装/髪」と「ギミック」というサブフォルダを用意し、そこに格納するようにしています。サブフォルダの作り方は、Hierarchy上でアバターを右クリックして、「Create Empty」を選択すれば作成できます。
ただ、ギミックの中には、サブフォルダに入れてしまうと正常に動作しないものがある(例:リアル影システム)ため、その場合はサブフォルダではなくアバター直下に格納するようにしましょう。
次に、全ての衣装で共通して使用するギミック(撮影関係など)を入れていきます。

2-3.ついでにエクスプレッションメニューも整理してみる
一応、これでオリジナル改変用素体の作成はほぼ終了しましたが、大量にギミックを導入すると、実際にVRCを起動した時にエクスプレッションメニューがあふれてしまい、一部のメニューが「more」の欄に表示されるようになってしまうリスクがあります。(moreの文字が見えた時にイラッとしたのは自分だけではないはず)
対策として、メニューを「ギミック」「衣装」など、分野ごとに整理するのが有効です。自分の場合、以下のように整理しています。

ちなみに、以下のルールで整理しています。(もちろん弊環境での話なので、ご自身の使いやすいカテゴリを設定しましょう)
Facial:表情に関するメニュー(FaceEmoなど)
Costume:衣装や小物の表示/非表示、衣装に付属のギミックなど
Camera:カメラ関係のギミック(VirtualLens2、FlexFishEyeなど)
Tools:カメラ以外のギミック(AvatarPoseSystem、リアル影システムなど)
Avatar:OSC経由でアバターの切り替えを行うためのメニュー
このように整理する方法ですが、まずHierarchy上でアバターを右クリックしてから、「Modular Avatar」→「Extract Menu」を選択しましょう。Hierarchy上に「Avatar Menu」というのが出てくるはずです。これは、アバター本体に本来含まれているエクスプレッションメニューです。使わないのであれば、消してしまいましょう。
次に、Create Emptyを使って、以下のようなPrefabを作りましょう。(つくったPrefabは、Project画面にドラッグ&ドロップして、Prefabとして保存しておくと、他のアバターにも使えるようになるので便利です)
なお、MA Menu Instrallerのインストール先は「アバター本来のEXメニューを司るオブジェクト」を指定する必要があります。Assets内のフォルダを漁ってみるか、一旦素体をScene内にポン置きしてInspector画面から確認してみましょう。

最後に、導入したギミックのどこかにあるはずのMA Menu Instrallerを探して(たまに無いギミックもあります。例:UOME lens)、インストール先を指定するだけです。「メニューを選択」ボタンを押せばインストール先を変更できます。弊環境の場合、例えばCameraを選択すると、Cameraの下にエクスプレッションメニューが表示されるようになります。

2-4.最後にOverride機能で保存して終了!
最後に、Override機能で今まで行ってきた改変を保存するだけです。Hierarchyでアバターを選んで、右側のInspector画面の上の方にある「Overrides」を押しましょう。
(軽量化のために、Overrideする前にAAO Trace and Optimizeをアバターに入れておくことを推奨します)

長々とリストが並んでいますが、これが今までの作業で加えた、変更点をまとめたリストになります。「Apply All」を押せば、一括保存ができます。ちなみに隣の「Revert All」を押してしまうと、元の状態に戻ってしまうのでご注意ください。Ctrl+Zで元に戻すことは可能です。
後で「あ、このギミックを追加したい!」となった場合は、今作ったPrefab Variantにギミックを追加して、再度Overrideすれば上書きできます。マテリアルの差し替えとかも同様です。衣装を着せた後の状態にも自動的に反映されるので、アップロードし直すだけで作業が完了します。
【注意】衣装を着せた状態でOverrideしてしまうと、衣装を着せた状態がPrefab Variantのデフォルトの状態になってしまうため、別衣装を着せる際に一旦脱がす手間が生じます。Overrideするのは必ず衣装を着せてない素の状態にしておきましょう。
後は作成したPrefab Variantをもとに、着せ替えを行うだけです。改変を楽しみましょう!

