Estoy creando lo que es esencialmente mi propio sistema prefabricado. Los objetos del juego están definidos por un archivo de datos legibles por humanos. Me gustaría crear un GameObject vacío, cargarlo con los componentes definidos en el archivo de datos y tenerlo listo y esperando una Instantiate()
llamada. Sin embargo, cada vez que uso GameObject go = new GameObject()
un nuevo objeto de juego se agrega a la escena.
Utilizando Unity integrado en prefabricados, puedo cargar un prefabricado como GameObject, y no se agrega a la escena. (Ver ejemplo a continuación)
La razón detrás de esto es que me gustaría tener una lista que contenga GameObjects, algunos generados al cargar prefabricados de Unity y otros creados por mi sistema de prefabricados personalizado. Esto debe suceder en tiempo de ejecución y no puede involucrar al Editor de Unity (ya que, idealmente, los usuarios finales podrían definir sus propios archivos de datos).
¿Cómo puedo crear un nuevo GameObject, sin que Unity lo instale automáticamente?
Por ejemplo, puedo hacer una llamada como esta:
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
Y obtendré una lista de GameObjects, ninguno de los cuales se agrega a la escena cuando se realiza la llamada. Esencialmente, estoy creando un LoadAll
método para mis propios prefabricados, y del mismo modo, no quiero instanciar los GameObjects cuando se realiza la llamada.
Destroy
al GameObject. Lo que lo elimina de la escena y lo libera, haciéndolo inutilizable.
go.SetActive(false)
es la mejor manera de crear algo así como un grupo de objetos. No es exactamente lo que desea, pero quizás podría tener un pequeño grupo de objetos inactivos que luego se clonarán para su instanciación personalizada.