Merhaba, bu yazımda Unity3D içerisinde ki “Inspector” alanında değişkenlerin yanında ekstra özellikler kullanmaya bakacağız. Bu yazıda kullanmış olduğum temel yapılardan bahsedeceğim. C# kullanmaktayım.
HideInInspector
Unity içerisinde C# yazarken “private” ve “public” değişken kullanırken biraz farklılık bulunmakta. “private” değişken “Inspector” panelinde görünmüyor ve Unity arayüzü üzerinden değiştirilemiyor. “public” değişken ise “Inspector” panelinde görünüyor ve Unity arayüzü ile değiştirmek mümkün. Ayrıca “private” değişken demek diğer script yapılarından o değişkene ulaşamamak demek. Bazen bir değişkenin Unity arayüzünde görünmesin ama başka bir script üzerinden o değişkene ulaşılmasını isteyebiliriz. Tabi bunu “getter-setter” metodlar ile de yapabiliriz. Eğer “getter-setter” metodları kullanmadan yapmak istersek, değişkenin önüne “[HideInInspector]” yazabiliriz.
Header
“Inspector” paneli içerisinde bir script içerisinde ki bir değişkene veya birden fazla değişkenin üzerine açıklama tarzında bir başlık eklememizi sağlamakta. Parametre olarak içerisine string bir değer almakta. Kullanımı ise, “[Header(“Header”)]” şeklindedir.
Space
Eğer “Inspector” paneli üzerinde iki değişken arasında boşluk bırakmak isterseniz “Space” yapısını kullanabilirsiniz. Parametre olarak float değer almakta. Kullanımı ise, “[Space(20.5f)]” şeklindedir.
Range
Eğer bir değişkenin belli bir değerler arasında değer almasını istiyorsak “Range” yapısını kullanabiliriz. İki farklı kullanım durumu var. Eğer altına yazdığımız değişken int tipinde ise “[Range(0, 5)]” şeklinde yazarak tam sayı olarak değişmesini sağlayabiliriz. İkinci alternatif olarak altına yazılan değer float tipinde ise “[Range(0f, 5f)]” şeklinde yazarak değerlerin virgüllü şekilde hareket etmesini sağlayabiliriz.
Tooltip
“Inspector” üzerinde bir değişkenin üzerine gelindiği zaman bir açıklama göstermek istersek “Tooltip” yapısını kullanabiliriz. Parametre olarak string bir değer almakta. Kullanım şekli ise, “[Tooltip(“Açıklama”)]”.
RequireComponent
Yukarıda incelediklerimiz dışında bu yapı biraz farklı. Öncelikle yukarıdakiler bir değişken için özel durumları ifade ediyordu. Bu yapı ise bir script için yazılmakta. Örneğin, script içerisinde o objeye ait “Rigidbody” değerini alacaksınız, eğer obje üzerinde “Rigidbody” eklenmemiş ise “GetComponent” ile alırken null olarak gelecek. Bunun önüne geçmek için o class üzerine “RequireComponent” ile “Rigidbody” ekliyoruz ve Unity arayüzünde scripti attığımız objeye otomatik olarak “Rigidbody” ekleniyor. Kullanımı ise, “[RequireComponent(typeof(Rigidbody))]”
Serializable
Son olarak “Serializable” yapısına bakalım. Script üzerinde bir tane sınıf yazdık ve bu sınıfın değerlerini arayüz üzerinden değiştirmek istiyoruz. Bir dizi yapısı kullanarak arayüz de göstermeye çalışırsak bu değişken görünmez. Göstermek için ise yazdığımız sınıfın üstüne “[Serializable]” eklememiz gerekmekte. Burada ek olarak kullandığımız yapı “System” altına yani “using System” olarak eklememiz gerekiyor.
Yanlış bilgi vermemeye çalışmak adına yazarken test ettiğim scriptin de arayüz içerisinden ekran görüntüsü ve scripti paylaşayım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
using UnityEngine; using System; [Serializable] public class Car { public int id; public string name; } [RequireComponent(typeof(Rigidbody))] public class InspectorTest : MonoBehaviour { [HideInInspector] public int number1; [Header("Header")] public int number2; public int number3; [Space(20.5f)] public int number4; [Range(0, 5)] public int number5; [Range(0f, 5f)] public float number6; [Tooltip("Number")] public int number7; private Rigidbody rb; public Car[] cars; // Use this for initialization void Start () { rb = GetComponent<Rigidbody>(); print(rb); } // Update is called once per frame void Update () { } } |
Teşekkürler, görüşmek üzere.