Unityの仕様詳細

ワールドはUnityのSceneですが、Unityでできることが全てできるわけではありません。 アプリそのものの動作・アップロードを可能にするための仕組み・アバターとの共存などを正常に成り立たせるため、様々な制約が存在します。

アップロードの動作

ワールドのほとんどはUnityのAssetBundleと呼ばれるデータとしてアップロードされ、メタデータが独自形式でアップロードされます。

アップロード時には、各プラットフォーム (Android (QuestはAndroidに含まれます), iOS, Windows, Mac) のAssetBundleがそれぞれ生成され、アップロードされます。 この際、各プラットフォームに対してSwitch Platformと同等の設定が自動的に行われます。

Unityのテクスチャなど、プラットフォームごとに解像度などに異なる設定が可能なアセットについては、それぞれの設定が最終的なワールドにも反映されます。

C#コードの振る舞いと配布アセットの利用

C#コードはAssetBundleには含まれません。なので、ワールド独自のC#コードをSceneに含めてもアップロードには含まれません。 一方で、MonoBehaviourのSerializeFieldの値、参照しているC#コードのGUIDなどはアップロードに含まれます。

なので、動作が可能なC#コードはアプリ本体で対応しているものだけとなります。 Unity Asset Storeなどで配布されているアセットには、ビジュアルエフェクト系アセットでも独自のC#コードで制御されているものがあります。 これらのアセットのうち、テクスチャ・マテリアル・シェーダー・パーティクルシステム・アニメーションなどは流用可能ですが、C#コードは動きません。 元の動作を再現するには、ClusterScriptやアニメーションコントローラーで似たような制御を行う必要があります。

一方で、よく使われるアセットについてはアプリ本体で対応しており、これらについてはC#を利用できます。 それらの一覧については使用できるアセットをご覧ください。