[Player.cs]
using UnityEngine;
public class Player : MonoBehaviour {
public int id;
public string playerName;
public string backStory;
public float health;
public float damage;
public float weapon1Damage, weapon2Damage;
public string shoesName;
public int shoesSize;
public string shoesType;
// Use this for initialization
void Start () {
health = 50;
}
// Update is called once per frame
void Update () {
}
}
[PlayerInspector.cs] - Asset/Editor 에 존재해야 한다.
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Player))]
public class PlayerInspector : Editor {
Player player;
bool showWeapons;
private void OnEnable()
{
player = (Player)target;
}
public override void OnInspectorGUI()
{
//base.OnInspectorGUI();
EditorGUILayout.BeginVertical();
EditorGUILayout.LabelField("Player id " + player.id);
player.playerName = EditorGUILayout.TextField("Player Name ", player.playerName);
EditorGUILayout.LabelField("Back Story");
player.backStory = EditorGUILayout.TextArea(player.backStory,GUILayout.MinHeight(70));
if (player.health < 20)
GUI.color = Color.red;
if (player.health > 80)
GUI.color = Color.green;
Rect progressRect = GUILayoutUtility.GetRect(20,20);
EditorGUI.ProgressBar(progressRect, player.health / 100.0f, "Health " + player.health + " / 100");
GUI.color = Color.white;
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
player.damage = EditorGUILayout.Slider("Damage ", player.damage, 10, 20);
if(player.damage < 12)
{
EditorGUILayout.HelpBox("The Damage is too low", MessageType.Warning);
}
if (player.damage > 18)
{
EditorGUILayout.HelpBox("Damage is too damn high", MessageType.Warning);
}
EditorGUILayout.Space();
EditorGUILayout.Space();
EditorGUILayout.Space();
showWeapons = EditorGUILayout.Foldout(showWeapons, "Weapons");
if(showWeapons)
{
player.weapon1Damage = EditorGUILayout.FloatField("Weapon 1 Damage", player.weapon1Damage);
EditorGUI.indentLevel += 2;
player.weapon2Damage = EditorGUILayout.FloatField("Weapon 2 Damage", player.weapon2Damage);
EditorGUI.indentLevel -= 2;
}
EditorGUILayout.LabelField("Shoes");
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Name ", GUILayout.MaxWidth(50));
player.shoesName = EditorGUILayout.TextField(player.shoesName);
EditorGUILayout.LabelField("Size ", GUILayout.MaxWidth(50));
player.shoesSize = EditorGUILayout.IntField(player.shoesSize);
EditorGUILayout.LabelField("Type ", GUILayout.MaxWidth(50));
player.shoesType = EditorGUILayout.TextField(player.shoesType);
EditorGUILayout.EndHorizontal();
EditorGUILayout.EndVertical();
player.health += 2;
if (player.health > 100)
player.health = 0;
}
}
