Skip to content

Scene・Prefab・親子関係 ​

SceneとGameObject ​

SceneはGameObjectとComponentの保存単位です。Hierarchyで開いているSceneと、作成先のActive Sceneを確認します。AssetとしてのSceneと、実際に読み込んだScene Instanceは区別してください。同じScene Assetを複数読み込むこともできます。

GameObjectを選ぶとInspectorにComponentが表示されます。通常のGameObjectにはTransformがあり、描画・物理・ScriptなどのComponentを組み合わせて機能を作ります。

親子付けと座標 ​

値基準
Transform.positionワールド位置
Transform.localPosition親を基準とした位置
Transform.rotation親を含むワールド回転
Transform.localRotation親に対する回転
Transform.localScale親に対する拡縮倍率

Hierarchyのドラッグで親子関係を変更できます。Sceneをまたぐ親子変更はできません。配置を保って親を変える場合、C#ではSetParent(parent, true)を使用します。非均等Scaleを持つ階層では、回転と拡縮の結果を実際の表示で確認してください。

保存・複製 ​

Sceneを保存すると編集用Worldの値を保存します。Play中の位置や生成物は、Stop後の編集Sceneへ自動反映するものではありません。

階層を複製すると、複製範囲内の参照は複製先へ、範囲外の参照は元の対象へ対応付けます。Asset自体の複製と、Hierarchy上のGameObject複製は別操作です。

Prefabを使う ​

繰り返し置くGameObjectのまとまりはPrefabとして保存します。ProjectのPrefabから配置し、Prefab編集とScene Instance側の編集を区別します。共通の変更を行う前に、Instance固有の値を残したいかを確認してください。

C#では保存FieldへPrefabを設定し、Instantiateで生成できます。戻り値がnullでないことを確認してから、Componentへアクセスします。

C#でSceneを切り替える ​

cs
using NEMEngine;

public sealed class SceneSwitcher : MonoBehaviour {

    [SerializeField] private SceneAsset? nextScene;

    void Update() {
        // Enterを押したframeだけ指定Sceneへ切り替える
        if (!Input.GetKeyDown(KeyCode.Return) || nextScene == null) return;
        SceneManager.LoadScene(nextScene);
    }
}

保存FieldのnextSceneにはProjectのSceneを設定します。LoadSceneは切替を要求するAPIで、呼んだ直後に新SceneのすべてのScriptが開始済みとは限りません。完了を受ける場合はSceneLoadedを使います。

LoadAdditiveは現在のSceneを残して追加します。返されたHandleを保持し、不要になったInstanceをUnloadで指定します。Asset名だけでInstanceを区別しないでください。

事前ロードと常駐 ​

PreloadSceneはGameObjectを生成せず依存Assetの先読みを要求します。DontDestroyOnLoadはPlay中のルートと子孫をScene切替後も保持します。参照を持ち続ける対象を常駐させる場合は、終了時の破棄とイベント購読の解除も合わせて設計します。

SceneManager · Transform

現行版マニュアル · 8ea58ba2 · 2026-10-28確認