反射与特性与Tool编写
大多数程序都是用来处理数据的,他们读,写,操作和显示数据,图形也是一种数据。
程序员为某种目的创建和使用一些类型,因此,在设计时必须理解所使用类型的特性。
有关程序及其类型的数据被称为元数据,他们保存在程序的程序集中,程序在运行时,可以查看其它程序集或本身的元数据。查看的行为叫反射,比如Type类。
特性是一种允许我们向程序集增加元数据的语言结构。他用于保存程序结构信息的某种特殊类型的类。特性的目的是告诉编译器把程序结构的某组元数据嵌入程序集。我们可以
通过把特性应用到结构来实现。
下面是Unity3d中应用特性的实例。
public class PathTool : ScriptableObject { [MenuItem("PathTool/Set Parent %q")]
static void SetParent()
{
Debug.Log("Perform operation");
}
[MenuItem("PathTool/Set Parent %q", true)]
static bool VallidateSelectiom()
{
if (Selection.activeGameObject == null)
return false;
else { return true; }
}
}
在编辑器状态下执行的脚本必须反正Editor文件下。
在非Editor文件下并把脚本放在别的对象上。
public class GameManager : MonoBehaviour { [ContextMenu("BuildPath")]
void BuildPath()
{
Debug.Log("Perform Operation");
}
}
反射与特性与Tool编写的更多相关文章
- .NET基础拾遗(4)委托、事件、反射与特性
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- C#图解教程 第二十四章 反射和特性
反射和特性 元数据和反射Type 类获取Type对象什么是特性应用特性预定义的保留的特性 Obsolete(废弃)特性Conditional特性调用者信息特性DebuggerStepThrough 特 ...
- C#反射与特性(一):反射基础
目录 C#反射与特性(一):反射基础 1. 说明 1.1 关于反射.特性 2. 程序集操作 2.1 获取 程序集对象(Assembly) 2.2 Assembly 使用 2.3 获取程序集的方式 C# ...
- C#反射与特性(五):类型成员操作
目录 1,MemberInfo 1.1 练习-获取类型的成员以及输出信息 1.2 MemberType 枚举 1.3 MemberInfo 获取成员方法并且调用 1.4 获取继承中方法的信息(Decl ...
- C#反射与特性(六):设计一个仿ASP.NETCore依赖注入Web
目录 1,编写依赖注入框架 1.1 路由索引 1.2 依赖实例化 1.3 实例化类型.依赖注入.调用方法 2,编写控制器和参数类型 2.1 编写类型 2.2 实现控制器 3,实现低配山寨 ASP.NE ...
- C#反射与特性(七):自定义特性以及应用
目录 1,属性字段的赋值和读值 2,自定义特性和特性查找 2.1 特性规范和自定义特性 2.2 检索特性 3,设计一个数据验证工具 3.1 定义抽象验证特性类 3.2 实现多个自定义验证特性 3.3 ...
- C#反射与特性(九):全网最全-解析反射
目录 1,判断类型 1.1 类和委托 1.2 值类型 1.3 接口 1.4 数组 2, 类型成员 2.1 类 2.2 委托 2.3 接口 [微信平台,此文仅授权<NCC 开源社区>订阅号发 ...
- C# 反射与特性(十):EMIT 构建代码
目录 构建代码 1,程序集(Assembly) 2,模块(Module) 3,类型(Type) 4,DynamicMethod 定义方法与添加 IL 前面,本系列一共写了 九 篇关于反射和特性相关的文 ...
- 十七、C# 反射、特性和动态编程
反射.特性和动态编程 1.访问元数据 2.成员调用 3.泛型上的反射 4.自定义特性 5.特性构造器 6.具名参数 7.预定义特性 8.动态编程 特性(attribute)是在一个程序集中插入 ...
随机推荐
- iOS 添加第三方字体
有时候根据UI的设计,我们需要添加第三方字体到工程中,实现特殊的效果. 一,把第三方字体包导入工程 二,在info.plist文件中添加Fonts provided by application 类型 ...
- C高级第二次作业
PTA作业第一部分 6-7 删除字符串中数字字符(10 分) 删除一个字符串中的所有数字字符. 函数接口定义: void delnum(char *s); 其中 s是用户传入的参数. 函数的功能是删除 ...
- webstrom左侧项目栏不显示文件夹问题
在使用webstrom的时候遇到问题: 打开项目,只显示package.json和webpack.config.js其他文件夹和文件都不显示 解决办法: 1.关闭webstrom当前项目 2.找到项目 ...
- Java基础之枚举类型
枚举 为什么需要枚举 在Java开发过程中,有时需要定义一系列有限的数据,如:月份.星期等.<br> java1.5之前,主要通过定义一系列静态常量完成. class Genders{ p ...
- cordova网络情况检测插件使用:cordova-plugin-network-information
1. 添加插件 : cordova plugin add cordova-plugin-network-information 2. 调用方法: document.addEventListener(' ...
- ios-项目启动页面
项目运行启动页面: 点工程项目targets-(或Images.xcasets)-LaunchImage(iphone四种规格图片:320*480/350*568/640*960/640*1136)将 ...
- 【java多线程】队列系统之说说队列Queue
转载:http://benjaminwhx.com/2018/05/05/%E8%AF%B4%E8%AF%B4%E9%98%9F%E5%88%97Queue/ 1.简介 Queue(队列):一种特殊的 ...
- scoping作用域,anonymous function匿名函数,built-in functions内置函数
作用域练习1 def test1(): print('in the test1') def test(): print('in the test') return test1 res = test() ...
- ubuntu crontab python 定时任务备记
crontab -e 写入: # at a.m every week with: # * * tar -zcf /var/backups/home.tgz /home/ # # For more in ...
- 使用RecyclerView实现聊天界面
原文地址:https://blog.csdn.net/wang_wy/article/details/79032698