Ö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;