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


相关推荐

  • SAP 常用的BAPI

    SAP 常用的BAPIBAPI_ALE_MODEL_GETBAPI_BARCODE_SENDLISTBAPI_ANSWER_READMULTIPLEBAPI_APPCOMP_READMULTIPLEBAPI_PROCDIA_READMULTIPLEBAPI_PROCDIA_WRITEMULTIPLEBAPI_DIAVAR_READMULTIPLEBAPI_DIAVAR_WRITEMULTIPLEBAPI_PROCE

    2022年7月24日
    17
  • python匹配两个文件中相同的内容

    python匹配两个文件中相同的内容data_small.txt中内容如下:34305258139732data_big.txt中内容如下:343 2009-05-30T17:01:58Z 39.04183745 -94.5914053833 9191343 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 890423 2009-05-28T23:40:31Z 39.0523183095 -94.6074986458 890456 2009-05-27T18:59:50

    2022年10月10日
    4
  • maven-porm.xml详解

    maven-porm.xml详解什么是POM?POM是项目对象模型(ProjectObjectModel)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权…

    2022年6月15日
    29
  • JavaScript对象

    JavaScript对象

    2021年11月29日
    42
  • 徐 氏 介 绍_徐氏的起源

    徐 氏 介 绍_徐氏的起源一、姓氏源流徐氏的姓氏来源比较纯正,主要出自嬴姓。是先帝玄孙伯益之子若木的后裔。相传陷帝有一个孙女叫女修,因食燕子蛋而怀有大业。大业娶少典氏女子女华为妻,生下了皋陶,皋陶生三子(另一说是六子)长子伯益,又叫…

    2025年9月22日
    6
  • JS全局变量不可使用的问题

    JS全局变量不可使用的问题关于js中全局变量不可使用的问题项目开发中,为了降低代码冗余,对于不同页面的相同代码可以放在一个public文件中,我的一个项目就遇到一个问题,我在一个js文件中定义的全局变量,在HTML和其他的JS文件中无法使用。解决办法我发现的是,我的全局变量放到了document.ready函数中,所以导致出现了函数的闭包问题,将变量的声明拿到ready函数之外就可以了,希望可以帮助到跟我遇到相同问题…

    2022年5月6日
    50

发表回复

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

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