监听面板值的变化

作者: 循环渐进123456 | 来源:发表于2017-09-25 17:07 被阅读3次

监听面板值的变化,一旦变化执行相应的方法,效果如下:

Paste_Image.png Paste_Image.png Paste_Image.png

效果就是这样的一个效果,具体运用的话,就看项目需求了。接下来看看实现代码。

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif 
public class ObserveAttribute : PropertyAttribute
{
    public string[] callbackNames;

    public ObserveAttribute(params string[] callbackNames)
    {
        this.callbackNames = callbackNames;
    }
}


#if UNITY_EDITOR
[CustomPropertyDrawer(typeof(ObserveAttribute))]
public class ObserveDrawer : PropertyDrawer
{
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        EditorGUI.BeginChangeCheck();
        EditorGUI.PropertyField(position, property, label);
        if (EditorGUI.EndChangeCheck())
        {
            if (IsMonoBehaviour(property))
            {

                MonoBehaviour mono = (MonoBehaviour)property.serializedObject.targetObject;

                foreach (var callbackName in observeAttribute.callbackNames)
                {
                    mono.Invoke(callbackName, 0);
                }

            }
        }
    }

    bool IsMonoBehaviour(SerializedProperty property)
    {
        return property.serializedObject.targetObject.GetType().IsSubclassOf(typeof(MonoBehaviour));
    }

    ObserveAttribute observeAttribute
    {
        get
        {
            return (ObserveAttribute)attribute;
        }
    }
}
#endif
using UnityEngine;

public class ObserveExample : MonoBehaviour
{
    [Observe("Callback")] 
    public string
        hoge;

    [Observe("Callback", "Callback2")] 
    public Test
        test;

    public enum Test
    {
        Hoge,
        Fuga
    }

    public void Callback ()
    {
        Debug.Log ("call");
    }

    private void Callback2 ()
    {
        Debug.Log ("call2");
    }
}

相关文章

  • 监听面板值的变化

    监听面板值的变化,一旦变化执行相应的方法,效果如下: 效果就是这样的一个效果,具体运用的话,就看项目需求了。接下来...

  • watch监听vuex值的变化

    用watch去监听vuex里面state值的变化:1、子组件存值: 2、父组件内使用watch去监听vuex值的变化:

  • angularjs的$watch、$watchGroup、$wa

    如果想在controller里面随时监听一个值的变化那就用 $watch 以上代码实现监听 name 属性值的变化...

  • vue之补充(十一)

    一、什么是计算属性? 计算属性是自动监听依赖值的变化,从而动态返回内容。监听是一个过程,在监听的值变化时,可以触发...

  • 获取设备朝向&监听设备朝向

    UIDeviceOrientation枚举值: 1 主动获取朝向 2 监听朝向变化 监听设备朝向变化时调用的方法,...

  • ReactiveCocoa小结

    1. 监听 KVO 1.1> 监听对象的属性变化 1.2> 监听Bool值改变 1.3> 监听方法 2.事件 2....

  • computed和 watch 的使用场景

    计算属性是自动监听依赖值的变化,动态返回内容,在监听的值变化时,可以触发回调。 computed使用场景:当有一些...

  • vue 数据监听

    选项:deep(监听单个值) 为了发现对象内部值的变化,可以在选项参数中指定 deep: true 。注意监听数组...

  • watch

    作用:监听数据的变化,拿到变化前与变化后的值。 使用方法: 最简单的用法 其中: newVal就是变化之后的值,o...

  • iOS-设置UITextfield内手机号码按344格式显示

    监听UITextfield值变化 定义成员变量 代理方法 试试吧

网友评论

    本文标题:监听面板值的变化

    本文链接:https://www.haomeiwen.com/subject/sasdextx.html