Unity specifications details

The world is a Unity Scene, but not everything possible in Unity can be done. Various restrictions exist to ensure the proper operation of the app, enable uploading, and coexist with avatars.

Upload behavior

Most of the world is uploaded as data called a Unity AssetBundle, and the metadata is uploaded in a proprietary format.

When uploading, AssetBundles for each platform (Android (Quest is included in Android), iOS, Windows, Mac) are generated and uploaded. At this time, settings equivalent to Switch Platform are automatically applied to each platform.

For assets such as Unity textures, where different settings such as resolution can be applied per platform, these settings are reflected in the final world.

C# code behavior and use of distributed assets

C# code is not included in AssetBundles. Therefore, even if the world’s original C# code is included in the Scene, it will not be included in the upload. However, values of MonoBehaviour’s SerializeField and GUIDs of referenced C# code are included in the upload.

As a result, only C# code supported by the app itself will work. Some assets distributed on the Unity Asset Store, even visual effects-related assets, are controlled by their own C# code. Among these assets, textures, materials, shaders, particle systems, animations, etc., can be reused, but C# code will not work. To reproduce the original behavior, you will need to perform similar controls using ClusterScript or animation controllers.

However, frequently used assets are supported by the app itself, and C# can be used for these. For a list of such assets, please refer to Available assets.