오늘은 프리팹을 Hierarchy에 동적으로 배치하는 방법에 대해 작성해 본다.
그냥 CustomEditor를 가지고 Instpector에서 Instantiate 해서 배치하는 방법도 있긴 하지만, 외부 Prefab을 가지고 배치하면 Unpack된 상태로 배치가 되기 때문에 외부 Prefab을 수정하면 이미 배치된 GameObject는 변경되지 않아 Prefab 자체를 배치하는 방법이다.
우선 코드를 보면,
private void GenerateObject(GameObject prefab)
{
TileObject tile = target as TileObject;
GameObject InstanceParent = GameObject.Find(tile.gameObject.transform.parent.name + "AddOn");
GameObject instance = (GameObject)PrefabUtility.InstantiatePrefab(prefab);
instance.transform.SetParent(InstanceParent.transform);
instance.transform.position = tile.transform.position;
tile.building = instance.GetComponent<BuildingObject>();
}
다음과 같이 수행했을 때 PrefabUtility.InstantiatePrefab(prefab); 해주면 일반적인 Instantiate 하는게 아니라 Prefab 자체가 배치되어 공통적인 부분은 Prefab에서 수정 할 수 있게 된다.