Unity Custom Inspector Oluşturma

Unity Custom Inspector Oluşturma

Örneğin canvasımıza eklediğimiz resmin rengini değiştirecek bir script oluşturduk ama resmin atamasını yapmadan renk alanının görünmesini istemiyoruz bu ve bunun gibi durumlarda Custom Inspector özelliğini kullanmamız gerekmekte.

using UnityEngine;
using UnityEngine.UI;
namespace alisahanyalcin
{
    public class ImageColorChanger : MonoBehaviour
    {
        public Image image;
        public Color color;
    }
}

şeklinde bir script oluşturduğumuzda sahnemizde herhangi bir game objecte atarsak şu şekilde görünecektir;

ama biz sadece Image alanı doldurulmuşsa Color alanının görünmesini istiyoruz. Bunun için Editor adında bir klasör oluşturup onun içerisinde ImageColorChangerEditor adında bir script dosyası oluşturmamız gerekiyor.

using UnityEditor;
namespace alisahanyalcin
{
    [CustomEditor(typeof(ImageColorChanger))]
    public class ImageColorChangerEditor : Editor
    {
        private SerializedProperty _color;
        private SerializedProperty _image;
        
        private void OnEnable()
        {
            _image = serializedObject.FindProperty("image");
            _color = serializedObject.FindProperty("color");
        }
        
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            if (_image.objectReferenceValue != null)
                EditorGUILayout.PropertyField(_color);
            
            serializedObject.ApplyModifiedProperties();
        }
    }
}

ve elde edeceğimiz sonuç aşağıdaki gibi olacaktır;