属性系统-编辑器和引擎的强力粘合剂
来源:互联网 发布:erp开源系统源码 编辑:程序博客网 时间:2024/04/30 01:21
很多时候,如果在做引擎的时候,不考虑编辑器怎么做,将来会是一件极其痛苦的事情。
简单的举例如下:
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对象丢给控件,就可以自动显示了。
- 属性系统-编辑器和引擎的强力粘合剂
- Signal和Slot的粘合剂
- Jython:Java和Python代码的粘合剂
- Jython:Java和Python代码的粘合剂
- 动画编辑器和动画引擎的不同
- Windows下的强力系统监视工具.
- 由FlexBox算法强力驱动的Weex布局引擎
- 简述瓦楞纸粘合剂的质量
- 基于规则和规则引擎的系统
- linux系统下vi编辑器的属性设置
- cocos2d粒子系统--粒子编辑器Particle designer属性的介绍
- cocos2d粒子系统--粒子编辑器Particle designer属性的介绍
- cocos2d粒子系统--粒子编辑器Particle designer属性的介绍
- cocos2d粒子系统--粒子编辑器Particle designer属性的介绍
- 适配器模式——得心应手的“粘合剂”
- 游戏之中的粘合剂---Lua脚本语言
- linux下的一些强力工具和桌面环境
- BCB的属性编辑器
- (JAVA SE 学习笔记)Java.SE.第010讲.面向对象之封装.续
- Mac OS X上安装OpenVPN
- VC2010编译boost
- C#中利用泛型扩展方法辅助枚举类型进行Flags处理
- C#中抽象类和接口的区别
- 属性系统-编辑器和引擎的强力粘合剂
- (JAVA SE 学习笔记)Java.SE.第011讲.面向对象之封装.续二(对一些原理机制进行了详细的解释,适合初学者学习)
- LINUX网页资源连接
- Java执行Shell脚本超时控制
- VS快捷键
- VS命令
- fedora 从源里安装 chrome 浏览器的方法
- 请确保在编译时已将“AjaxControlToolkit.Properties.Resources.NET4.resources”正确嵌入或链接到程序集“AjaxControlToolkit”
- 在 C++ 中实现一个轻量的标记清除 gc 系统