SceneとCube等のオブジェクトを同じシーンに読み込み,Sceneにコライダーを,オブジェクトにコライダーとRigidbodyをつけて投げて壁に当たったら跳ね返る機能を実装したい場合,「Sceneは読み込みに時間がかかる」性質が悪さする.
Sceneが読み込まれる前にオブジェクトが自由落下で床など衝突する予定だった地点を通り過ぎて奈落の底に落ちる可能性がある.私はこれのせいで1時間ほど「なんで白ピクミン読み込まれない!?」と途方に暮れていた.実際はデバッグのたびに白ピクミンを奈落の底に堕としていた.
対応策1:オブジェクトのY座標を大きくする.
床を通り過ぎる前にSceneが読み込まれればいいというマインド.直感的かつシンプル.Y=50だとSceneの読み込みに間に合った.
MetaQuest3でVRデモ 4. オブジェクトを初期位置にリスポーンするUI作成のようにリスポーン機能を実装していたら,リスポーン後オブジェクトが目の前に現れるまで少し待つ欠点はある.
対応策2:MRUKコンポーネントでオブジェクトの読み込みタイミングを制御する
こちらのほうがUnityやMetaXRを分かっています感を出せる.
オブジェクトを非アクティブ状態にする.Inspectorの一番上のチェックを外す.

MRUKコンポーネントが含まれるオブジェクトのInspectorからMRUKを編集.
Scene Loaded Event()の「+」をクリック.オブジェクトを追加し,関数はSetActive(bool)を選択する.すると,GameObject.SetActiveの下にチェックボックスが表示されるので,チェックを入れる.

【解説】
Scene Loaded Event()はSceneが読み込まれた後に発生するオブジェクトの関数をセットしている.
オブジェクトのSetActive関数はオブジェクトの有効化に関するもので,Trueが入力されることで有効化される.
つまり,Sceneが読み込まれた後に無効化されていたオブジェクトが有効化して初期位置から自由落下を始める.すでにSceneは読み込み済みなので,通り過ぎることなく床で衝突する.