Unity3d – Attributes
- Attributes can be placed above a Class, Property or Function in a script, that specially indicate for any special behavior on it.
- We can decorate our Classes, Properties or Metadata using attributes.
- C# contains attribute names within square brackets.
1) Header:
- Header Attribute useful to add Header like a Title above some fields in the Inspector.
[Header("Player Data")]
public string playerName;
public int playerHealth;
[Header("Enemy Data")]
[Header("Enemy Data")]
public string enemyHealth;
public int enemyPower;2) Hide InInspector:
- This attribute makes a variable not show up in the Inspector but be serialized.
[HideInInspector]
[HideInInspector]
public string playerName;
public int playerHealth;
3) Range:
- This attribute used to make a float or int variable in a script be restricted to a specific range.
- When this attribute is used, the float or int will be shown as a slider in the Inspector instead of the default number field.
- Parameters: Range(Min Value, Max Value)
[Range(0, 100)]
public int playerHealth;
[Range(20, 50)]
4) Space:
- This attribute make a space between two sections.
public string playerName;
public int playerHealth;
[Space]
[Space]
public Transform targetEnemy;
public float attackSpeed;
[Space]
[Space]
public string enemyHealth;
public int enemyPower;
5) Multiline/TextArea:
- This attribute helps to make multiple lines for a string in Inspector.
- TextArea attribute is used to display multiple lines in Inspector for a string. Displaying is only change in Inspector.
- TextArea renders a flexible textbox with a scrollbar.
public string objectName;
[Multiline]
public string objectMultiline;
[TextArea]
public string objectTextArea;
public string objectTextArea;
6) Tooltip:
- Display tooltip when hovering of that field in Inspector window.
[Range(0, 100)]
[Tooltip("Player Health value between 0 and 100")]
public int playerHealth;
7) ContextMenu:
- The ContextMenu attribute allows you to add commands to the context menu.
- In the inspector of the attached script. When the user selects the context menu, the function will be executed.
- This is most useful for automatically setting up Scene data from the script. The function has to be non-static.
public class AttributesExample : MonoBehaviour
{
[ContextMenu("TestContextMenu")]
private void TestContextMenu()
{
Debug.Log("Hey! I am Debug for ContextMenu Testing.");
}
}
}
8) UnityEditor:
- All UnityEditor components can used using this attribute.
[UnityEditor.MenuItem("MyShortcuts/Clear AllPrefrences")]
public static void ClearAllPrefrences()
{
Debug.Log("Clear All Prefrences");
PlayerPrefs.DeleteAll();
}
}
9) HelpURL:
- This attribute provide custom documentation URL for a class.
[HelpURL("http://www.unity3dtechguru.com/")]
public class MyComponentClass
{
}
10) DisallowMultipleComponent:
- Prevents MonoBehaviour of same type (or subtype) to be added more than once to a GameObject.
[DisallowMultipleComponent]
public class MyComponentClass
{
}
}
11) ExecuteInEditMode:
- Makes all instances of a script execute in Edit Mode.
- By default, MonoBehaviours are only executed in Play Mode. By adding this attribute, any instance of the MonoBehaviour will have its callback functions executed while the Editor is in Edit Mode too.
[ExecuteInEditMode]
public class MyClass : MonoBehaviour
{
void Awake()
{
Debug.Log("Editor causes this Awake");
}
}
12) SerializedField:
12) SerializedField:
- Force Unity to serialize a private field.
- When Unity serializes your scripts, it will only serialize public fields. If in addition to that you also want Unity to serialize one of your private fields you can add the SerializeField attribute to the field.
- The serialization system used can do the following:
- CAN serialize public nonstatic fields (of serializable types)
- CAN serialize nonpublic nonstatic fields marked with the SerializeField attribute.
- CANNOT serialize static fields.
- CANNOT serialize properties.
- All classes inheriting from UnityEngine.Object, for example GameObject, Component, MonoBehaviour, Texture2D, AnimationClip.
- All basic data types like int, string, float, bool.
- Some built-in types like Vector2, Vector3, Vector4, Quaternion, Matrix4x4, Color, Rect, LayerMask.
- Arrays of a serializable type
- List of a serializable type
- Enums
- Structs
Note: if you put one element in a list (or array) twice when the list gets serialized, you'll get two copies of that element, instead of one copy being in the new list twice.
public class AttributeExample : MonoBehaviour
{
//This field gets serialized because it is public.
public string playerName = "SudhirKotila";
//This field does not get serialized because it is private.
private int age = 28;
//This field gets serialized even though it is private
//because it has the SerializeField attribute applied.
[SerializeField]
private bool hasHealthPotion = true;
void Start()
{
if (hasHealthPotion)
Debug.Log("Person's name: " + playerName + " Person's age: " + age);
}
}
Nice article! Good for quick revision and reference.
ReplyDeleteThank you.
DeleteAntalya
ReplyDeleteAntep
Burdur
Sakarya
istanbul
GN50
67C87
ReplyDeleteMalatya Lojistik
Hatay Şehirler Arası Nakliyat
Pursaklar Parke Ustası
Çerkezköy Marangoz
Ardahan Lojistik
Ünye Marangoz
Keçiören Fayans Ustası
Antalya Parça Eşya Taşıma
Iğdır Evden Eve Nakliyat
23653
ReplyDeleteSilivri Evden Eve Nakliyat
steroids for sale
buy turinabol
Edirne Evden Eve Nakliyat
Karaman Evden Eve Nakliyat
Niğde Evden Eve Nakliyat
Uşak Evden Eve Nakliyat
turinabol for sale
boldenone for sale
0ED47
ReplyDeletebinance komisyon indirimi %20
24A70
ReplyDeleteCaw Coin Hangi Borsada
Ceek Coin Hangi Borsada
Bitcoin Kazanma
Azero Coin Hangi Borsada
Binance Kimin
Mexc Borsası Kimin
Bitcoin Madenciliği Nasıl Yapılır
Parasız Görüntülü Sohbet
Bitcoin Nasıl Kazılır
5B939
ReplyDeleteYoutube Beğeni Hilesi
Binance Referans Kodu
Coin Madenciliği Siteleri
Binance Madenciliği Nedir
Ort Coin Hangi Borsada
Clubhouse Takipçi Hilesi
Coin Oynama
Pi Network Coin Hangi Borsada
Youtube Abone Hilesi
61CC6
ReplyDeletebitexen
binance 100 dolar
okex
btcturk
nar sabunu
keçi sütü bal sabunu
bitcoin nasıl kazanılır
bibox
bkex
AD989
ReplyDeletemobil proxy 4g
bitexen
mexc
huobi
canlı sohbet siteleri
aax
bingx
en iyi kripto para uygulaması
kızlarla canlı sohbet
327A3
ReplyDeletebinance referans
kripto para nereden alınır
referans kimliği
canlı sohbet ucretsiz
kaldıraç nasıl yapılır
canlı sohbet uygulamaları
bitexen
paribu
kucoin