Odin Inspector 系列教程 — Type Filter Attribute
教程 系列 type attribute filter inspector Odin
2023-06-13 09:12:29 时间
大家好,又见面了,我是你们的朋友全栈君。
Type Filter Attribute特性:对输入的value 进行自定义过滤,只显示需要的类型
完整示例代码
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.cn/162838.html原文链接:https://javaforall.cn
相关文章
- pycharm调试教程_程序调试时应当用
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(11)-Fiddler设置安卓手机抓包,不会可是万万不行的!
- postman安装使用教程—图文讲解
- Odin Inspector 系列教程 — Show If Attribute
- Odin Inspector 系列教程 — Inline Property Attribute[通俗易懂]
- 【测试开发】python系列教程: 标准数据类型(一)数字
- RabbitMQ中文系列教程四
- 「Docker学习系列教程」9-Docker容器数据卷介绍
- k8s 系列教程-Vagrant
- 【测试开发】python系列教程:数字
- PS 2018软件安装下载完美中文版小白教程--PS软件全版本
- Go 高性能系列教程之四:执行跟踪器
- 教程:VPS常用性能网络测试脚本
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(10)-Charles如何修改请求参数和响应数据-下篇
- Linux使用教程:轻松安装htop实现高效系统监控(linux安装htop)
- 从小白到熟练浅析Redis的大白话系列教程(大白话redis系列)
- 学习步骤下载mysql56安装mysql56运行mysql56标题MySQL56下载安装运行教程(mysql下载安装5.6)
- 中文Access2000速成教程--1.7创建索引
- LNMP系列教程之设置404错误页面
- 为Java程序员准备的10分钟Perl教程