Thursday 11 February 2016

Unity Tutorial Indonesia : Attribute - [SerializeField]

Advertisement


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#

nah pada variabel yang sama, mimin juga ingin kalo variabel tersebut bisa diedit pada jendela Inspektor, maka dari itu digunakan attribute [SerializeField].


Latihan

Pertama buat sebuah C# Script "LatihanAttribute.cs" dan tambahkan listing program berikut,
using UnityEngine;
using System.Collections;

public class LatihanAttribute : MonoBehaviour {

          [SerializeField]
          private string nama = "Mata Lemon";

}
Berikan script ke Main Camera atau objek apapun, kemudian lihat pada jendela inspektor variabel nama yang diberi akses private dapat diedit pada jendela Inspektor.





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);
            }
}
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";

[SerializeField]
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