Salam super, kali ini mimin mau membahas attribute yang ada pada c# unity. Ada banyak jenis attribute yang digunakan pada C#, yaitu :
A. Unity Attribute
- [AddComponentMenu]
- [ContextMenu]
- [ContextMenuItem]
- [MenuItem]
- [NetworkSettings]
B. Unity Class Attribute
- [DisallowMultipleComponent]
- [ExecuteInEditMode]
- [InitializeOnLoad]
- [RequireComponent]
- [RuntimeInitializeOnLoad]
C. Unity Property Attribute
- [HideInInspector]
- [IntRangeAttribute]
- [Multiline]
- [SerializeField]
- [TextArea]
- [Tooltip]
- [Header]
- [Range]
- [Space]
[SerializeField]
[SerializeField] digunakan untuk menampilkan variabel yang di-private atau di-default pada listing program di jendela Inspektor.
Umumnya untuk menampilkan variabel cukup diberi akses "public" seperti "public int umur", maka pada jendela inspektor bakal ditampilin tuh variabel dan bisa diedit juga, nah bagaimana agar variabel yang diberi akses "private" dan "default" dapat ditampilkan juga ? gunakan [SerializeField].
<bertanya> "Tunggu dulu, kalo untuk menampilkan di inspektor bisa pakai akses "public" kenapa repot-repot pake "private" sama [SerializeField] ? </bertanya>
Jadi gini pas bikin variabel kadang mimin gak mau variabel ini bisa diakses oleh Class lain makanya dikasih akses "private" biar hanya Class tersebut yang bisa mengakses variabel,
BACA JUGA : Modifier Akses Pada C#
BACA JUGA : Modifier Akses Pada C#
nah pada variabel yang sama, mimin juga ingin kalo variabel tersebut bisa diedit pada jendela Inspektor, maka dari itu digunakan attribute [SerializeField].
Latihan
using UnityEngine;
using System.Collections;
public class LatihanAttribute : MonoBehaviour {
[SerializeField]
private string nama = "Mata Lemon";
}
using System.Collections;
public class LatihanAttribute : MonoBehaviour {
[SerializeField]
private string nama = "Mata Lemon";
}
Untuk mengetest apakah variabel dapat diedit atau tidak, remake script tadi menjadi
using UnityEngine;
using System.Collections;
public class LatihanAttribute : MonoBehaviour {
[SerializeField]
private string nama = "Mata Lemon";
void Start(){
Debug.Log(nama);
}
}
using System.Collections;
public class LatihanAttribute : MonoBehaviour {
[SerializeField]
private string nama = "Mata Lemon";
void Start(){
Debug.Log(nama);
}
}
Dan coba ganti nama pada jendela inspektor sebelum game dijalankan, kalo sudah play game, maka pada jendela konsol akan diprint si variabel nama yang baru.
Bagaimana jika ada 2 variabel private yang ingin diedit melalui inspektor ? gunakan juga 2 atrribute [SerializeField]
[SerializeField]
private string nama = "Mata Lemon";
private string nama = "Mata Lemon";
[SerializeField]
private int umur;
private int umur;
[System.Serializable]
Apa perbedaan [SerializeField] dan [Serializable] ?
Sederhana saja [System.Serializable] digunakan untuk Class, Enum, Struct, Delegate. Sedangkan [SerializeField] digunakan untuk variabel.
EmoticonEmoticon