Udon規定について
- Unity入稿ではSDK3とUdonが使用可能です
Udonは出来る事の幅が広い分、容易にインスタンスに致命的な不具合を発生させることが可能なため、入稿ルールに加えて下記の制限を課させていただきます
- この規定は入稿期間外、期間中に関わらず改訂される可能性があります。
A.入稿規定
- UdonNode、またはU#を使用することができます
- UdonSharpを使用する場合、スクリプト内容精査のため、UdonSharpProgramAssetsまたはUAssemblyの他に出力元のスクリプトファイルも入稿フォルダに含めてください
- スクリプトファイルは「出展者ID」フォルダ直下に「UdonScript」という名称のフォルダを作成し、そこに入れてください
B.Scene内階層形式規定
-
UdonBehaviourを含むオブジェクト、UdonBehaviourによって操作を行うオブジェクトは全て入稿ルール C.Scene内階層規定におけるDynamicオブジェクトの階層下に入れてください
- Dynamicオブジェクトの階層下にあるオブジェクトを実行時に階層外に移動する行為は禁止です
全てのUdonBehaviourオブジェクトの親であるDynamicオブジェクトは初期でInactive状態にしてください
UdonBehaviourを含むオブジェクトのLayerはUserLayer23としてください
UserLayer23のコリジョン設定は以下の通りです

C.UdonBehaviour規定
- UdonBehaviourは1ブースあたり 25 まで
- そのうちSynchronizePositionが有効なUdonBehaviourは1ブースあたり 10 まで
- AllowOwnershipTransferOnCollisionは必ずFalseにすること
- UdonBehaviourによってオブジェクトをスペース外に移動させる行為は禁止です
- プレイヤーに追従する機構はスペース外のプレイヤーには追従しないようスクリプトを組んでください
- VRC Pickupによって、プレイヤーがオブジェクトをPickupすることでブース外に出る場合はこれに当たりません
- プレイヤーの設定(移動速度等)の変更はプレイヤーがスペース内にいる場合のみ許可されます。またプレイヤーがスペース外に出た際に必ず設定を初期値に戻してください
- プレイヤーの位置変更(テレポート)は、プレイヤーがスペース内にいる状態で、スペース内のどこかに移動させる場合のみ許可されます
D.スクリプト規定
- [UdonSynced]を付与した変数は1ブースあたり 3 まで
- [UdonSynced]を付与した変数は下記の型のみ使用できます
- bool, sbyte, byte, ushort, short, uint, int, float
- U#においては、全てのクラスは以下のようなnamespaceに所属させてください
GamV0.Circle[出展者ID]
-
[出展者ID]
は数字で置き換えてください 例: GamV0.Circle9999
-
[出展者ID]
の後ろにnamespaceを追加することは許可されています。 例: GamV0.Circle9999.Example
- 下記の変数、関数は使用できません
- 使用禁止変数
- Transform.root
- GameObject.Layer
- RenderSettingsクラスの変数全て
- 使用禁止関数
- UdonSharpBehaviour.VRCInstantiate
- GameObject.Find
- Object.Destroy
- Object.DestroyImmediate
- Transform.DetachChildren
- Physics.RayCastを始めとする、PhysicsクラスのCast関数を使用する際は下記の制限に従ってください
- layerMaskを設定し、レイヤー23以外のコライダを無視するようにする
- maxDistanceは最長で10メートルまで
- 以下をconstメンバーとしてクラスに設定してください
private const float _maxDistance = 10.0f;
private const int _layerMask = 8388608;
ワールド仕様
- ワールドに用意されたUdonスクリプトによって、ブースの「Dynamic」オブジェクトはブース接近時にActive状態となり、離れた時にInactive状態になります
- 後から入場したプレイヤーにもブース表示状態は同期されますが、Udonの仕様上、位置や変数の同期ずれが発生します