- Home /
Question by
tariasvillares · Jul 31, 2018 at 02:40 PM ·
unityeditorscriptingproblem
PropertyDrawer and SerializedProperty aren't working correctly
Hi guys! I need some help here.
I'm trying to make this work, but for some reason my PropertyDrawer isn't working the way it should with my SerializedProperty. The custom PropertyDrawer is inside the Assets\Editor. Can you point what's wrong here? The PropertyDrawer.OnGUI() is not being executed...
Many thanks =)
Ps: the CustomEditor is a bit messy, because I was trying to figure out what was wrong, so please do not burn me, ok?
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DisableablePropertyAttribute : PropertyAttribute {}
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomPropertyDrawer(typeof(DisableablePropertyAttribute))]
public class DisableablePropertyDrawer : PropertyDrawer {
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
Debug.Log(">>> Executing DisebleablePropertyDrawer.OnGUI()");
if (TargetSpawnerCustomEditor._spwnChanceSum > TargetSpawnerCustomEditor._maximumSpawnChanceSummation)
{
GUI.enabled = false;
}
else {
GUI.enabled = true;
}
EditorGUI.PropertyField(position, property, label);
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
Debug.Log(">>> Executing DisebleablePropertyDrawer.GetPropertyHeight()");
return EditorGUI.GetPropertyHeight(property, label);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(TargetSpawner))][CanEditMultipleObjects]
public class TargetSpawnerCustomEditor : Editor {
private static float _spawnChanceSum = 0f;
public static float _maximumSpawnChanceSummation { get; } = 1f;
public float _minSpawnChance;
public static float _spwnChanceSum {
get {
return _spawnChanceSum;
}
}
public override void OnInspectorGUI()
{
TargetSpawner _tSpawner = (TargetSpawner)target;
_minSpawnChance = EditorGUILayout.FloatField("Min spawn chance", _minSpawnChance);
///*
if (_spawnChanceSum > 1f) {
_spawnChanceSum = 1f;
}
//*/
EditorGUILayout.LabelField("Maximum = " + _maximumSpawnChanceSummation);
EditorGUILayout.LabelField("Current value = " + _spawnChanceSum);
/*
_spawnChanceSum = 0f;
for (int i = 0; i < _tSpawner._spawnDataList.Count; i++) {
_spawnChanceSum += _tSpawner._spawnDataList[i]._spawnChance;
if (_spawnChanceSum > 1f)
EditorGUI.BeginDisabledGroup(true);
_tSpawner._spawnDataList[i]._spawnChance = EditorGUILayout.Slider(_tSpawner._spawnDataList[i]._tag, _tSpawner._spawnDataList[i]._spawnChance, 0.000f, _maximumSpawnChanceSummation);
if (_spawnChanceSum <= 1f)
EditorGUI.EndDisabledGroup();
EditorGUILayout.Space();
//_maxCumulativeChance -= _tSpawner._spawnDataList[i]._spawnChance;
}
*/
//EditorGUI.BeginChangeCheck();
//if (EditorGUI.EndChangeCheck()) {
//}
//*/
//EditorGUILayout.LabelField("Sum = " + SpawnData._spawnChanceSum);
/*
for (int i = 0; i < _tSpawner._spawnDataList.Count; i++) {
if ((_maxTest + _tSpawner._spawnDataList[i]._spawnChance) == 1) {
foreach (SpawnData _s in _tSpawner._spawnDataList) {
}
}
}
//*/
///*
for (int i = 0; i < _tSpawner._spawnDataList.Count; i++)
{
_spawnChanceSum += _tSpawner._spawnDataList[i]._spawnChance;
_tSpawner._spawnDataList[i]._spawnChance = EditorGUILayout.Slider(_tSpawner._spawnDataList[i]._tag, _tSpawner._spawnDataList[i]._spawnChance, 0.000f, _maximumSpawnChanceSummation);
EditorGUILayout.Space();
}
//*/
}
}
Comment