zoukankan      html  css  js  c++  java
  • Unity Editor 扩展PropertyDrawer (属性的 Inspector )

    using UnityEngine;
    
    [System.Serializable]
    public struct RangeFloat {
    
        public float min;
        public float max;
    
        public RangeFloat (float minValue, float maxValue) {
            min = minValue;
            max = maxValue;
        }
    
        public float Lerp (float t) {
            return Mathf.Lerp(min, max, t);
        }
    }
    

    以下代码放置在名为 Editor 的文件夹下

    #pragma warning disable 0649
    
    using UnityEditor;
    using UnityEngine;
    
    [CustomPropertyDrawer(typeof(RangeFloat))]
    public class RangeFloatDrawer : PropertyDrawer {
    
        public override void OnGUI (Rect position, SerializedProperty property, GUIContent label) {
            // 只能在 position 指定的范围内绘制
            EditorGUI.BeginProperty(position, label, property);
            {
                float x, w;
                int elementCount = 3;
                for (int i = 0; i < elementCount; i++) {
                    w = position.width / elementCount;
                    x = position.x + w * i;
                    switch (i) {
                        case 0:
                            EditorGUIUtility.labelWidth = 25;
                            EditorGUI.LabelField(new Rect(x, position.y, w, position.height), property.displayName);
                            break;
                        case 1:
                            EditorGUIUtility.labelWidth = 25;
                            EditorGUI.PropertyField(new Rect(x, position.y, w, position.height), property.FindPropertyRelative("min"));
                            break;
                        case 2:
                            EditorGUIUtility.labelWidth = 25;
                            EditorGUI.PropertyField(new Rect(x, position.y, w, position.height), property.FindPropertyRelative("max"));
                            break;
                    }
                }
            }
            EditorGUI.EndProperty();
            EditorGUIUtility.labelWidth = 0; // 将其设置为 0 会重置为默认值
        }
    
    }
    
  • 相关阅读:
    UVa10340.All in All
    UVa1368.DNA Consensus String
    《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅲ
    UVa232.Crossword Answers
    Uva272.TEX Quotes
    《Algorithms 4th Edition》读书笔记——3.1 符号表(Elementary Symbol Tables)-Ⅱ
    算法面试(3)
    算法面试(2)
    算法面试(1)
    hdu 4896 Minimal Spanning Tree
  • 原文地址:https://www.cnblogs.com/kingBook/p/15331723.html
Copyright © 2011-2022 走看看