Unity herhangi bir obje oluşturup onun içerisine nesneler ekleyebilirsiniz. Ya da projenize dahil ettiğiniz Prefabları dilediğiniz gibi kullanabilirsiniz. Bunun için Instantiate() kullanıyoruz. Oyun esnasında random olarak yada daha önceden belirlediğiniz Transform alanlarına belirli nesneleri atamak için kullanıma uygundur. Hemen bir test yapalım.
public class Test : MonoBehaviour
{
public Transform Hedef;
public GameObject Nesne;
void Start()
{
Instantiante(Nesne, Hedef.position, Hedef.rotation);
}
}
Bu kullanım Nesne olarak belirlediğimiz nesneyi Hedef olarak belirlediğimiz Transform alanının position ve rotation bilgilerine göre ekler. Kullanımı biraz daha geliştirelim ve oluşturduğumuz nesneyi Hedef'in alt elemanı olarak ekletelim. Kodumuzun hemen altına;
Nesne.transform.parent = Hedef.transform;
Böylece Nesne objemiz Transform'un alt elemanı olacaktır. Yani onu Parent olarak belirledik. Peki oluşturduktan sonra yerini değiştirebilir miyiz? Tabiki değiştirebiliriz.
Nesne.position = New Vector3(x,y,z);
Direk oluştururkende olması gereken yerin verilerini Vector3 olarak atayabiliriz. Tekrar oluşturalım..
Instantiante(Nesne, New Vector3(x,y,z));
Belirlediğimiz alanda Nesne Objemiz oluşacaktır. Atama yaparak herkes bunu anlatır peki senin yazında bilgime bilgi katacak ne var? diyen sevgili senyörlerim; Biraz daha fazla detaylandıralım o zaman. İlk olarak atanan Objeyi bir GameObject haline çevirelim.
GameObject obje = Instantiate(Nesne, new Vector3(0,0,0), Quaternion.identity) as GameObject;
O bizim için artık obje. Veya classın içinde tanımlayacağınız public bir Gameobject'e atama yapabilirsiniz.
public class Test : MonoBehaviour
{
public Transform Hedef;
public GameObject Nesne;
public GameObject YeniObje;
void Start()
{
YeniObje = Instantiante(Nesne, Hedef.position, Hedef.rotation) as GameObject;
}
}
Peki ya herşey tamam, şimdi bu oluşturduğumuz nesneyi atama yoluyla değil de projemizde bir yerden bulup getirsek? Emriniz olur :)
public class Test : MonoBehaviour
{
public Transform Hedef;
public GameObject Nesne;
public GameObject YeniObje;
void Start()
{
YeniObje = Instantiante(Resources.Load("Resources Klasöründe Nesnenin Yeri"), Hedef.position, Hedef.rotation) as GameObject;
}
}
Resources isimli bir klasör oluşturun Assets'in içerisine. Prefablarınızı orada tutun mesela Assets > Resources> Prefab > ev.prefab dosyanız var diyelim.
Resources.Load("Prefab/ev");
Bunuda anladığınızı umuyorum. Ne anlattık derleyelim toplayalım. Derli toplu olsun; Instantiate ile bir objeyi mevcut sahnemize dahil ettik. parent ile bir transformun içine ekledik. Pozisyonunu değiştirdik ve projemizde bir yerde olan prefab yada nesneyi oyuna eklettik. Hepsi bu. Farklı kullanımları için aşağıdaki bağlantıya gidebilirsiniz.
https://docs.unity3d.com/ScriptReference/Object.Instantiate.html
Hepinize iyi kodlamalar.
Bu yazıya henüz bir yorum yapılmamış, hemen bir tane yapmak ister misin ?
Milyonlarca oyuncu tarafından oynanan BDO(Black Desert Online) için oyuna yeni başlayanlara yardımcı olması açısından rehber sitesi
Organik Sebzelerim Olmaya Başladı için Temel Coşkun dediki, Bereketli olsun bana da tadına bakmak nasip olur inşallah
UsluTV V2 Canlı TV Scripti için OSHAN SABIRLI dediki, Merhaba TV İzleme scripti ile ilgileniyorum. Bilgi verirseniz sevinirim.
Online Test Sınav Yazılımı için volkan dediki, merhabalar hocam volkan ben bu test çözme scriptinin fiyatı nedir öğrenebilir miyiz...benim bi iki ...
PHP ve Ajax Kullanarak Otomatik Resim Upload Sayfası Nasıl Oluşturulur? için erkan dediki, kodları denedim gayet başarılı çalışıyor. js veya diğer koddaki yolları verirken gerekli ayarları y...
Burada Yer Almak ister misin ? İletişim sayfasından bana ulaşabilirsin :)
UsluTV V2 Canlı TV Scripti için Kazım USLU dediki, Devam eden satışımız bulunmamakta maalesef.