很多时候,如果在做引擎的时候,不考虑编辑器怎么做,将来会是一件极其痛苦的事情。
简单的举例如下:
1. 很多物体有很多的属性要编辑,比如粒子系统的发射器属性,效果器属性。这些大量的属性,如果你没有一套很好的机制来描述的话,做编辑器的时候,将会是灾难。
2. 很多时候,引擎的扩展性带来得一个问题是,物体的类型是未知的,如何在编辑器里做编辑?比如你的粒子系统的发射器类型未知,效果器未知(都是可以扩展的嘛),这些未知的物体有未知的属性。另外,材质系统中,shader参数(不同的 shader有不同的参数)的编辑等等。
如果说1是还可以补救的灾难,那么问题2就是无法解决的。
在C#中,可以采用property的方式,给物体暴露出property就可以了。这个property可以被property grid控件直接识别。
但是在 C++中没有property关键字。但是我们可以自己实现一个。
具体实现注意以下几个事情:
1. 如果没人用到属性系统,就不要去创建它。就是说默认的对象没有属性系统的,只有有人要使用该对象的属性系统的时候,才会创建Property的实例。
2. 描述性尽量强大一些。我的引擎采用xml辅助来描述。
3. 尽量使用的时候简单一些,比如Property->setValue() 就能直接改变物体的属性。
4. 消息通知机制, setValue完后,可以采用一定的方式通知 物体本身,对属性的修改做出反应。
5. 将这套Property系统和一个控件链接起来,默认只要把Property对象丢给控件,就可以自动显示了。
分享到:
相关推荐
行业资料-电子功用-用于显示器的光学透明粘合剂和包括该粘合剂的电子装置
DB11 1983-2022建筑类涂料与胶粘剂挥发性有机化合物含量限值标准
行业分类-外包设计-粘合剂及使用该粘合剂的包装层压制品的介绍分析.rar
行业-电子-抗潮导电粘合剂及其制造和使用方法的介绍分析.rar
行业文档-设计装置-一种胶粘剂真空设备
行业文档-设计装置-一种胶粘剂反应装置
行业-电子政务-用于封装电子装置的粘合剂和方法.zip
行业文档-设计装置-新型纸箱粘合剂的制备方法
行业资料-电子功用-常温固化型静电植绒粘合剂
行业资料-电子功用-抗静电保护性热熔粘合剂
行业资料-电子功用-可电分割的聚酰胺粘合剂
行业-电子政务-具有导电粘合剂的耐用电子组件.zip
行业分类-设备装置-用于涂覆粘合剂的装置以及用于制造纸杯的机器和方法.zip
行业资料-电子功用-各向异性的导电粘合剂膜
行业分类-设备装置-用于纸标签的压敏粘合剂
行业资料-制造说明-薄膜状胶粘剂、切割胶带一体型薄膜状胶粘剂以及半导体装置的制造方法.zip
行业分类-设备装置-NP-98水性聚氨酯胶粘剂作为工笔画用绢处理剂的应用.zip
教育科研-学习工具-NP-98水性聚氨酯胶粘剂作为工笔画用绢处理剂的应用.zip
行业分类-外包设计-多组份粘合剂包装袋的说明分析.rar
电子政务-厚膜电路封口用胶粘剂.zip