Unity Sceneとプレハブとgit管理の関係について
今回は、UnityのSceneとプレハブとgit管理の関係について調査する。
- Untitled1.unityとUntitled2.unityで、同じプレハブを利用する。
- Untitled1.unityでプレハブを変更しapplyを実行する
- Untitled1.unityを保存
- Untitled2.unityに移動して保存
- その後、gitで状態を見る
プレハブにアタッチするコード
using UnityEngine; using System.Collections; public class Sample : MonoBehaviour { public bool testFlage; public int test2; public int[] testArray; }
テスト
Untitled1のTest Flageにチェックを入れてapplyして保存
Untitled2を開いて保存して閉じる
gitの状態
➜ SceneTest git:(master) ✗ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: Assets/Prefabs/GameObject.prefab modified: Assets/Scenes/Untitled1.unity modified: Assets/Scenes/Untitled2.unity
結果、考察
Hierarchy上に配置してあるオブジェクトを変更するだけでシーンが書き換わってしまう。
UIなどのプレハブを全てのシーン上に配置した場合、
applayを行うと全てのシーンが書き換わってしまう。
プレハブを更新してもシーンの差分が残らないようにするためには、スクリプト内からプレハブを作成するようにしなければならない。
元々、Hierarchy上になければ差分はでないのだから