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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java分页显示(旅游线路)

    Java分页显示(旅游线路)

    2021年11月11日
    37
  • RabbitMQ 原理图和名词理解(二)[通俗易懂]

    RabbitMQ 原理图和名词理解(二)[通俗易懂]一、RabbitMQ简介RabbitMQ是基于AMQP实现的一个开源消息组件,主要用于在分布式系统中存储转发消息,由因高性能、高可用以及高扩展而出名的Erlang写成。其中,AMQP(AdvancedMessageQueuingProtocol,即高级消息队列协议),是一个异步消息传递所使用的应用层协议规范,为面向消息的中间件设计。RabbiMQ是EDA事件驱动架构的核心,也是CQR…

    2022年6月22日
    23
  • 2022电力电缆复训题库及在线模拟考试

    2022电力电缆复训题库及在线模拟考试题库来源:安全生产模拟考试一点通公众号小程序2022年电力电缆操作证考试题为电力电缆复习题考前押题!2022电力电缆复训题库及在线模拟考试根据电力电缆考试教材。电力电缆考试题库通过安全生产模拟考试一点通准确把握考试要点。1、【单选题】6~35kV三芯交联聚乙烯电缆共用()。(A)A、内护套B、中性导体C、地线2、【单选题】中性点经电阻接地的优点是,()。(A)A、减小了单相接地电流B、不需要增加设备C、加大了电磁干扰3、【单选题】传统的配电网,特别是农村电网多为()。(

    2022年5月7日
    59
  • Java学习路线总结(书籍、视频推荐篇)[通俗易懂]

    Java学习路线总结(书籍、视频推荐篇)[通俗易懂]立志存高远,笃行践初心三更灯火五更鸡,正是男儿读书时。黑发不知勤学早,白首方悔读书迟。立志,标定人生方向;奋斗,创造人生价值,二者相辅相成,互相促进。大部分程序员的「目标」都是成为一名优秀的工程师,一名可以统览全局的「架构师」。千里之行始于足下对于大部分普通人而言,成为一名优秀的架构师还是有一定难度的,「千里之行始于足下,一步一个脚印,慢慢来」。????粉丝专属福利:包邮送书3本,如下书单四选一。????获取方式:1、参与文末投票,点赞,收藏即有机会获得精美图书一

    2022年5月16日
    46
  • 解决网页上不能直接复制文字的问题「建议收藏」

    解决网页上不能直接复制文字的问题「建议收藏」禁用JavaScript获取网页文字一、简介二、具体操作步骤(1)打开开发人员工具(2)禁用JavaScript(3)点击确定,刷新页面(4)(5)三、总结与说明一、简介二、具体操作步骤(1)打开开发人员工具点击F12快捷键直接打开开发人员工具,多数电脑都能使用该快捷键直接打开,按F12后在浏览器右上方会出现如下图界面,点击打开开发工具即可成功打开界面如下:注:此界面功能巨大,这里我就不详细介绍,此时你只需要注意上图中我画框的齿轮位置如果使用F12快捷方式不能打开开发人员工具:在网页中先点

    2022年10月9日
    2
  • IDC评述网:12月下旬国内域名解析服务商Top10

    IDC评述网:12月下旬国内域名解析服务商Top10

    2021年8月27日
    76

发表回复

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

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