Unity 3D Components-SCRIPT İLE COMPONENT KONTROLÜ
SCRIPT İLE COMPONENT KONTROLÜ:
Nokta (.) işareti yazılımda bağlantı kurmak için kullanılır.
Birbirleri ile bağlantılı objeler kurulur bu sayede. Classlar arası bağlantı
kurulur.
GameObject değişkeni = Hiyerarşi menüsünde gördüğümüz her
şey birer oyun objesidir. Bu oyun objelerini içinde barındıran değişkene ise
GameObject değişkeni denilir.
İlk olarak;
public class Control : MonoBehaviour
{
public GameObject mesh;
İlk olarak bu kodu yazıyoruz. Bu kod sayesinde editörde
script gözükecek.
private void Start()
{
print (mesh) ;
Bu kodu yazarsak editörde mesh’in
içine sürükleyip attığımız objenin isminin yazdırır.
}
}
Ardından editöre gelip baktığımızda control objesinin
içindeki scripte Mesh adlı bir başlık çıkıyor ve içerisinde None (Game Object)
yazıyor. Bu kısıma Hierarşi menüsünden componentini kontrol etmek istediğimiz
bir objeyi sürüklüyoruz. Örneğin ben burada Cube1 objesinin componentlerine ulaşmak
istediğim için cube1 i sürüklüyorum.
public class Control : MonoBehaviour
{
public GameObject mesh;
private void Start()
{
mesh.GetComponent<Light>().intensity = 100.0f;
İlk olarak componentine erişmek istediğimiz objenin adını yazıyoruz.
Ardından . koyup GetComponent < >( ) yapıyoruz ve daha sonra < > bu işaretlerin arasına hangi componenti değiştirmek istiyorsak onun ismini yazıyoruz.
Daha sonra . koyup componentte hangi özelliği değiştirmek istiyorsak onun adını yazıp istediğimiz değere eşitliyoruz ve ardından ; koyarak kodu bitiriyoruz. }
public GameObject mesh;
mesh.GetComponent<Light>().intensity = 100.0f;
İlk olarak componentine erişmek istediğimiz objenin adını yazıyoruz.
Ardından . koyup GetComponent < >( ) yapıyoruz ve daha sonra < > bu işaretlerin arasına hangi componenti değiştirmek istiyorsak onun ismini yazıyoruz.
Daha sonra . koyup componentte hangi özelliği değiştirmek istiyorsak onun adını yazıp istediğimiz değere eşitliyoruz ve ardından ; koyarak kodu bitiriyoruz. }
}
public class Control : MonoBehaviour
{
public GameObject mesh;
private void Start()
{
GetComponent<Light>().intensity = 100.0f;
Eğer ki başına mesh yazmazsak erişmek istediğimiz componenti
control scriptini atttığımız obje içinde arar ve bulamadığında hata verir.
Başına bir şey yazmadan yandaki gibi yazarsak;
This.GetComponent<Light>().intensity = 100.0f;
Şeklinde başında this
olarak düşünür.
print (this);
Bu kodu yazdırdığımızda ise control scriptini hangi objenin içine attıysak o objenin ismini ardından parantez içinde bu scriptin ismini yazdırır. Önemli bir not ise bu kodu yukarıdaki getcomponent kodu ile direkt kullandığında hata verir Getcomponent ‘in başına this yazmayı unutma!
}
}
public class Control : MonoBehaviour
{
private void Start()
{
this.GetComponent<Light>().intensity = 100.0f;
print(this);
Böyle yaptığımızda public GameObject mesh ;
koduna gerek yok çünkü scripti attığımız objenin içerisinde arıyor componenti
bu durumda
public class Control : MonoBehaviour
{
public GameObject mesh;
{
GetComponent<Light>().intensity = 100.0f;
Eğer ki başına mesh yazmazsak erişmek istediğimiz componenti
control scriptini atttığımız obje içinde arar ve bulamadığında hata verir.
Başına bir şey yazmadan yandaki gibi yazarsak;
This.GetComponent<Light>().intensity = 100.0f;
print (this);
Bu kodu yazdırdığımızda ise control scriptini hangi objenin içine attıysak o objenin ismini ardından parantez içinde bu scriptin ismini yazdırır. Önemli bir not ise bu kodu yukarıdaki getcomponent kodu ile direkt kullandığında hata verir Getcomponent ‘in başına this yazmayı unutma!
}
public class Control : MonoBehaviour
{
private void Start()
this.GetComponent<Light>().intensity = 100.0f;
Ayrıca başına
this yazmasak bile program başında this var gibi düşünüyor.
}
}
}
Hiç yorum yok: