본질적으로 내 프리 팹 시스템을 만들고 있습니다. 게임 개체는 사람이 읽을 수있는 데이터 파일로 정의됩니다. 빈 GameObject를 만들고 데이터 파일에 정의 된 구성 요소와 함께로드하고 준비 대기하고 Instantiate()
전화를 기다리고 싶습니다 . 그러나 GameObject go = new GameObject()
새로운 게임 오브젝트를 사용할 때마다 장면에 추가됩니다.
프리 팹에 내장 된 Unity를 사용하여 프리 팹을 GameObject로로드 할 수 있으며 씬에 추가되지 않습니다. (아래 예 참조)
이것의 근거는 GameObjects를 포함하는 하나의 목록을 갖고 싶습니다. 일부는 Unity 프리 팹을로드하여 생성 한 것이고 다른 하나는 사용자 지정 프리 팹 시스템으로 생성 된 것입니다. 이는 런타임에 발생해야하며 Unity 에디터를 포함 할 수 없습니다 (최종 사용자가 자신의 데이터 파일을 정의 할 수 있기 때문에).
Unity가 자동으로 인스턴스화하지 않고 새 게임 오브젝트를 만들려면 어떻게해야합니까?
예를 들어 다음과 같이 전화를 걸 수 있습니다.
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
그리고 GameObjects의리스트를 얻을 것입니다. 어떤 것도 호출 할 때 씬에 추가되지 않습니다. 본질적으로, 나는 LoadAll
내 자신의 프리 팹에 대한 메소드를 만들고 있으며 , 마찬가지로 호출이있을 때 GameObjects를 인스턴스화하고 싶지 않습니다.
Destroy
은 GameObject를 호출 하는 것입니다. 장면에서 제거하고 해제하여 사용할 수 없게 만듭니다.
go.SetActive(false)
은 객체 풀과 같은 것을 만드는 가장 좋은 방법입니다. 정확히 원하는 것은 아니지만 나중에 사용자 정의 인스턴스화를 위해 복제되는 작은 비활성 객체 그룹을 가질 수 있습니다.