Aslında kendi prefabrik sistemimi yaratıyorum. Oyun nesneleri okunabilir bir veri dosyası tarafından tanımlanır. Boş bir GameObject oluşturmak, veri dosyasında tanımlanan bileşenlerle yüklemek ve hazır ve bir Instantiate()
çağrı bekletmek istiyorum . Ancak, ne zaman GameObject go = new GameObject()
yeni bir oyun nesnesi kullanırsam sahneye eklenir.
Yerleşik prefabrik üniteleri kullanarak, GameObject olarak bir prefabrik yükleyebilirim ve sahneye eklenmez. (Aşağıdaki örneğe bakın)
Bunun arkasındaki mantık, GameObjects'i içeren bir listeye sahip olmak istiyorum, bazıları Unity prefabrikleri ve diğerleri özel prefabrik sistemim tarafından oluşturuldu. Bunun çalışma zamanında gerçekleşmesi gerekir ve Unity Editor'ü içeremez (ideal olarak son kullanıcılar kendi veri dosyalarını tanımlayabilirler).
Unity'yi otomatik olarak benimsemeden yeni bir GameObject'i nasıl oluşturabilirim?
Örneğin, şöyle bir arama yapabilirim:
Resources.LoadAll("PrefabsDirectory", typeof(GameObject))
Ve arama yapıldığında sahneye hiçbiri eklenmeyen GameObjects'in bir listesini alacağım. Esasen, LoadAll
kendi prefabriklerim için bir yöntem oluşturuyorum ve benzer şekilde, arama yapıldığında GameObjects'i örneklemek istemiyorum.
Destroy
GameObject'e çağrı yapmak olduğuna inanıyorum . Bu onu sahneden çıkarır ve serbest bırakır, kullanılamaz hale getirir.
go.SetActive(false)
, nesne havuzu gibi bir şey oluşturmanın en iyi yoludur. Bu tam olarak istediğiniz gibi değil, ancak daha sonra özel örneğiniz için klonlanan küçük bir etkin olmayan nesne grubuna sahip olabilirsiniz.