Odin Inspector 系列教程 — Type Filter Attribute

Odin Inspector 系列教程 — Type Filter AttributeTypeFilterAttribute特性:对输入的value进行自定义过滤,只显示需要的类型完整示例代码usingSirenix.OdinInspector;usingSirenix.Utilities;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usin…

大家好,又见面了,我是你们的朋友全栈君。

Type Filter Attribute特性:对输入的value 进行自定义过滤,只显示需要的类型

7643202-82b1adbff518e404.png

完整示例代码

using Sirenix.OdinInspector;
using Sirenix.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class TypeFilterExample : MonoBehaviour
{
    [ShowInInspector]
    [TypeFilter("GetFilteredTypeList")]
    public BaseClass A, B;

    [ShowInInspector]
    [TypeFilter("GetFilteredTypeList")]
    public BaseClass[] Array = new BaseClass[3];

    public IEnumerable<Type> GetFilteredTypeList()
    {
        var q = typeof(BaseClass).Assembly.GetTypes()
            .Where(x => !x.IsAbstract)                                          // 不包括 BaseClass
            .Where(x => !x.IsGenericTypeDefinition)                             // 不包括 C1<>
            .Where(x => typeof(BaseClass).IsAssignableFrom(x));                 // 排除不从BaseClass继承的类 

        // Adds various C1<T> type variants.
        q = q.AppendWith(typeof(C1<>).MakeGenericType(typeof(GameObject))); //添加C1泛型为GameObject 的value
        q = q.AppendWith(typeof(C1<>).MakeGenericType(typeof(AnimationCurve)));//添加C1泛型为AnimationCurve 的value
        q = q.AppendWith(typeof(C1<>).MakeGenericType(typeof(List<float>)));//添加C1泛型为List<float> 的value

        return q;
    }

    public abstract class BaseClass
    {
        public int BaseField;
    }

    public class A1 : BaseClass { public int _A1; }
    public class A2 : A1 { public int _A2; }
    public class A3 : A2 { public int _A3; }
    public class B1 : BaseClass { public int _B1; }
    public class B2 : B1 { public int _B2; }
    public class B3 : B2 { public int _B3; }
    public class C1<T> : BaseClass { public T C; }
}

更多教程内容详见:革命性Unity 编辑器扩展工具 — Odin Inspector 系列教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162838.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 大数据常用十种开发语言[通俗易懂]

    大数据常用十种开发语言[通俗易懂]随着大数据热潮持续延烧,几乎每个产业都有如洪水般倾泻的信息,面对上万笔的顾客浏览纪录、购买行为数据,如果要用Excel来进行数据处理真是太不切实际了,Excel相较于其他统计软件的功能已相去甚远;但如果只会操作统计软件而不会用逻辑分析数据背后的涵义与事实现况相应证的话,那也不过只能做数据处理,替代性很高的工作,而无法深入规划策略的核心。  当然,基本功是最不可忽略的环节,想要成为数据

    2022年6月3日
  • 华为verilog代码规范(wps初学者入门教程)

    对于初学者,可大致了解VerologHDL所提供的能力,掌握VerilogHDL语言的核心子集。1VerilogHDL语言具有:设计的行为特性、设计的数据流特性、设计的结构组成以及包括响应监控和设计验证方面的时延和波形产生机制。2如何描述自顶向下的设计思想:每个模块实现特定的功能,模块间可进行层次的嵌套,因此可以将大型的数字电路设计分割成大小不一的小模块来实现特定的功能,最后通过由顶层模块调用子模块来实现整体功能。3三种建模方式3.1结构化描述方式结构化建模方式就是通过对电

    2022年4月15日
  • pytest skipif_pytest不是内部或外部命令

    pytest skipif_pytest不是内部或外部命令前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月30日
  • ms17010复现

    ms17010复现关于漏洞的复现干多了就发现,这种菜鸟级别的复现,,真是没有啥实用性,主要就是,自己玩玩,,,唉,,  ms17_010,好像跟什么永恒之蓝,勒索病毒有啥关系。但是,我这种小白可管不着,而且现在做的所有的复现都是基于防火墙关闭,所以,没有啥技术,复现也白复现。。。。 好了,还是讲复现: 搜索:search17_010很容易看出来,这个第一个方法是搜索网段中主机漏洞的,

    2022年6月6日
  • S3C2440 体系结构图

    S3C2440 体系结构图ARM bank:ArmState寄存器:ThumbState寄存器:CPRS寄存器:模式控制M0-M4:PC值计算:大小端:中断向量:

    2022年4月30日
  • C语言getchar的用法_getchar的用法

    C语言getchar的用法_getchar的用法getchargetchar的定义MSDN中的解释是从流中读取一个字符intch=getchar()//通过getchar获取字符的ASCII码值传到ch里面存储这里注意:getchar获取字符以后通过ASCII码值的形式存储在ch里为什么不用charch?getchar读到的是一个int类型的数据好处是返回值的时候非常方便接下来我们再看一个示例:intmain(){intch=0;while((ch=getch.

    2022年10月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号