位置: 编程技术 - 正文

Unity游戏开发——C#特性Attribute与自动化(unity游戏项目开发教程)

编辑:rootadmin

推荐整理分享Unity游戏开发——C#特性Attribute与自动化(unity游戏项目开发教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity 开发游戏,unity游戏开发入门经典,unity游戏开发流程,unity游戏项目开发教程,unity5.x游戏开发指南,unity 开发游戏,unity游戏开发技术详解与典型案例,unity 开发游戏,内容如对您有帮助,希望把文章链接给更多的朋友!

这篇文章主要讲一下C#里面Attribute的使用方法及其可能的应用场景。

比如你把玩家的血量、攻击、防御等属性写到枚举里面。然后界面可能有很多地方要根据这个枚举获取属性的描述文本。

比如你做网络框架的时候,一个协议号对应一个类的处理或者一个方法。

比如你做ORM,一个类的属性是否映射持久化文件中的属性,映射过去的属性名是什么。

1、什么是Attribute如果用过Java的Annotation的同学,可以把Attribute当成Annotation来看待。还不了解Attribute的同学不用急,我们看一下官方的解释:Unity游戏开发——C#特性Attribute与自动化(unity游戏项目开发教程)

The Attribute class associates predefined system information or user-defined custom information with a target element. A target element can be an assembly, class, constructor, delegate, enum, event, field, interface, method, portable executable file module, parameter, property, return value, struct, or another attribute.

Information provided by an attribute is also known as metadata. Metadata can be examined at run time by your application to control how your program processes data, or before run time by external tools to control how your application itself is processed or maintained. For example, the .NET Framework predefines and uses attribute types to control run-time behavior, and some programming languages use attribute types to represent language features not directly supported by the .NET Framework common type system.

All attribute types derive directly or indirectly from the Attribute class. Attributes can be applied to any target element; multiple attributes can be applied to the same target element; and attributes can be inherited by an element derived from a target element. Use the AttributeTargets class to specify the target element to which the attribute is applied.

The Attribute class provides convenient methods to retrieve and test custom attributes. For more information about using attributes, see Applying Attributes and Extending Metadata Using Attributes.

翻译过来就是: Attribute类可以把目标元素和一个预定义的信息或者是用户自定义信息关联起来。这里的目标元素可以是assembly,class,constructor,delegate,enum,event,field,interface,method,可执行文件模块,parameter,property,return value,struct或其它的Attribute。 Attribute提供的信息也被称为元数据(metadata)。元数据能用于在运行时控制怎样访问你的程序数据,或者在运行前通过额外的工具来控制怎样处理你的程序或部署它。例如.NET Framework预定义并使用attribute去控制运行时行为,一些编程语言使用attribute类型来描述.NET Framework中通用类型不直接支持的语言特性。 所有的Attribute类型直接或间接从Attribute类继承。Attribute能应用到任何target元素;多个Attribute能应用到相同的元素; Attribute类提供遍历的方法去取出和测试自定义Attribute。更多关于Attribute的信息,可以看Applying Attributes和Extending Metadata Using Attributes。如果你看了官方的解释不明白,看了我的翻译也不明白。也没事。。。我们接下来举个例子看看Attribute能做啥。2、用Attribute将枚举和一个描述文本绑定在一起假设有这个枚举注意:如果含中文的代码编译报“Newline in constant”的错。那么请将文件的编码保存为“带BOM的UTF-8”。VS中可以在“文件”-“高级保存选项”,然后选择编码下拉中选择。然后你现在想要根据枚举来获得中文描述:比如传入:Properties.MagDef返回“法术防御”。最原始的做法:这样确实可以解决问题,但是我们可以用Attribute来做的更好。可以做的更好干嘛不呢?先定义一个用于存储描述文本的Attribute。没错,看起来是不是觉得很简单。然后我们就可以把上面定义的PropertiesDesc加到Properties上面,像这样:OK。这样,我们相当于就把一个文本描述信息通过Attribute关联到我们的枚举属性了。那么怎样获取?我们来重写之前的PropertiesUtils类。可以看到。这里面已经不用自己去判断哪个枚举值返回哪个字符串描述了。而是获取这个枚举域的PropertiesDesc对象。然后返回它的Desc属性。当然,你还可以把上面的代码改成通用的,把Properties改成一个Type,这样就可以处理所有的枚举。然后还可以在查找PropertiesDesc的位置增加一个缓存。根据Type和字段的Name做缓存。改完后代码如下:3、还能干什么? Attribute能干的事情太多了,比如你写了个类,想做ORM映射,里面有些字段不想映射到表,有些想映射到表。有些字段可能名字和表的字段不一样。这时候你就可以通过Attribute来标识哪个字段需要被映射,映射到数据库哪个字段。等等。

做过网络框架的同学也应该比较熟悉的一个应用,使用Attribute来做自动的消息派发。

总之,Attribute可以做很多自动化的事情,就看你怎么用了。

Unity3D之Vector3.Dot和Vector3.Cross的使用 原文地址:Unity3D之Vector3.Dot和Vector3.Cross的使用在unity3D中,Vector3.Dot表示求两个向量的点积;Vector3.Cross表示求两个向量的叉积。点积计算的结果为数,而

Protecting Content With AssetBundle[Unity] WhilstitispossibletouseencryptiontosecureyourAssetsastheyarebeingtransmitted,oncethedataisinthehandsoftheclientitispossibletofindwaystograbthecontentfromthem.Forinstance,therearetoolsouttherewhichcanr

Unity3D图像后处理特效——Fisheye image effect

标签: unity游戏项目开发教程

本文链接地址:https://www.jiuchutong.com/biancheng/377291.html 转载请保留说明!

上一篇:Unity的协同停止问题(unity 协作)

下一篇:Unity3D之Vector3.Dot和Vector3.Cross的使用

  • 个人偶然所得税率多少
  • 如何查询企业税务状态
  • 金税盘软件
  • 铜川缴纳房屋契税怎么算
  • 收到所得税退税怎么做账务处理
  • 新准则下怎么调整长期股权投资损益调整
  • 车间一般性耗用材料会计分录
  • 应交税费科目核算
  • 个人承包承租转包转租取得的所得
  • 个人独资企业是一般纳税人吗
  • 员工证书补贴标准
  • 营改增后建筑业
  • 采购退货退款怎么做账
  • 增值税税率
  • 6月份税务新政热点问题有哪些?
  • 税务局如何检查上传的发票
  • 专票当月未认证怎么处理
  • 开错的发票正常入账吗
  • 未实现但已确认的风险代理费收入如何处理?
  • 企业名称变更后社保也要变更吗
  • 政府补贴专项资金如何入账
  • 海外代付属于外债吗
  • 工会经费税收
  • 个体工商户支付宝怎么开票
  • 企业所得税的计算公式及实例
  • 对外捐赠的账务处理
  • 广告业年终总结
  • 商业支付时使用
  • 结转进项税销项税额的分录怎么写
  • 计算机怎么设置长亮
  • 购买不动产会计分录
  • 材料成本差异如何理解
  • 支付包装物押金为什么是其他应收款
  • 企业税务罚款标准
  • 收回前欠货款会导致资产总额增加吗
  • 车辆违章罚款的钱上交到那了
  • 残疾人就业保障金有什么好处
  • 前端css要掌握到什么程度
  • PHP:imagecolorset()的用法_GD库图像处理函数
  • 政府闲置土地
  • 向日葵茎上有刺吗
  • php获取post参数
  • thinkphp教程
  • 前端面试题什么是网络协议
  • 真正的出道仙谁来封
  • 宝塔主机分销系统设计
  • 公司注销实收资本退回需要交税吗
  • 红字发票可以跨越开吗
  • 补充医疗相关政策
  • 融资租赁首付租金会计账务处理
  • sql server 2008 r2 express 精简版与企业版的区别
  • 当月销售次月开票怎么做账
  • 职工教育经费的扣除限额
  • 社保账务会计分录2019
  • 核定征收和查账征收报税有区别吗
  • 有限合伙企业如何报税
  • 保证金计算器
  • 购买土地的入账价值包括什么
  • 已经入库的商品出库了要怎么做会计分录
  • 企业为何
  • 建筑材料检测费入账科目
  • 支票有效期10天是自然日还是工作日
  • centos访问网页命令
  • win8界面什么样
  • 使用灭火器人要站在上风口还是下风口
  • win8禁用网络之后如何开启
  • windows 10 正式版
  • linux xfs 扩容
  • win7 64位纯净版系统c盘空间显示与实际占用空间不对的解决方法图文教程
  • node modules干嘛的
  • 原生js实现路由
  • CalledFromWrongThreadException: Only the original thread that created a view
  • node drain事件
  • 叠加计算公式
  • 城管大队长级别高吗
  • 增值税抵扣联怎么装订
  • 车没交车船税上路什么后果
  • 徐州交社保有户口限制吗
  • 购买税控盘怎么抵扣
  • 税务津贴提高1100
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设