Unity Inspectorda Değişkeni Sadece Okunabilir (Read Only) Yapma
Unity Inspectorda Değişkeni Sadece Okunabilir (Read Only) Yapma
Merhaba arkadaşlar bu gün sizlere Unity üzerinden tanımladığımız Public ve SerializeField olan değişkenlerin Inspector penceresinden nasıl değiştirilemez bir hale getirebileceğinizi anlatacağım, yapacağımız işlemi biraz daha iyi anlayabilmeniz için hemen aşağıdaki resim işinize yarayacaktır.
Yukarıdaki ekran görüntüsünde gördüğünüz gibi son iki değişken Unity üzerinden düzenlenemiyor hadi gelin nasıl yaptığımıza geçelim.
Bu yapacağımız işlem için bize iki adet Script gerekiyor bunların isimlerini kafanıza göre koyabilirsiniz ama ben şu isimleri kullanıyorum genel olarak bu işlem için.
- 1. Scriptim SadeceOkunabilirEditor
- 2. Scriptimin adı SadeceOkunabilirDeger
SadeceOkunabilirEditor Scriptimizin Kodları
// Kütüphanelerimizi dahil ediyoruz using UnityEngine; using UnityEditor; [CustomPropertyDrawer(typeof(SadeceOkunabilirDeger))] // Özel değer çizdiğini ve bu özel değerin türünün SadeceOkunabilirDeger olduğunu belirtiyoruz. public class SadeceOkunabilirEditor : PropertyDrawer // Sınıfımızı PropertyDrawer sınıfından türetiyoruz { public override void OnGUI(Rect konum, SerializedProperty ozellik, GUIContent cizgi) // GUI ye aşırı yükleme yapıyor ve değerleri alıyoruz { GUI.enabled = false; // GUI yi kapatıyoruz EditorGUI.PropertyField(konum, ozellik, cizgi, true); // İstediğimiz özellikleri veriyoruz GUI.enabled = true; // GUI yi aktif hale getiriyoruz } }
SadeceOkunabilirDeger Scriptimizin Kodları
// Kütüphanemizi çekiyoruz using UnityEngine; public class SadeceOkunabilirDeger : PropertyAttribute { } // Boş bir sınıf oluşturduk ve bu sınıfın Editör Attribute si yani editör düzenleyecisi olduğunu söyledik, o sınıftan türettik.
Kullanımı
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Deneme : MonoBehaviour { // Düzenlenebilir Değişkenler public float deneme; [SerializeField] private float deneme1; // Inspector penceresinden düzenlenemeyen değişkenler [SadeceOkunabilirDeger]public float deneme2; [SerializeField] [SadeceOkunabilirDeger] private float deneme3; }
Benim yazdığım sürümünü indirmek ve diğer yazdığım eklenti / paketleri indirmek isterseniz aşağıdaki bağlantıları kullanabilirsiniz.
Unity Paketlerim (Github)
Unity Sadece Okunabilir Değişken (Github)
Yorum Gönder