引擎开发日志:场景编辑器开发难点

【题外话:引擎特性展示】

以下视频集成渲染、动画、物理、脚本、粒子等模块

物理约束+脚本控制

 

骨骼动画+粒子特效

 

最近游戏引擎开发到了编辑器的设计上,自绘控件系统已经完成了85%,可以呈现按钮,滚动框,分割框之类的控件,也能为其自定义事件响应(搭配Plang编程脚本),可以说很顺利。

前几天捋了捋编辑器开发将会遇到的难题,总结了以下几个:

  1. 界面交互的redo和undo机制
  2. 多窗口编辑视图的支持
  3. 可扩展的插件视图
  4. 引擎对象属性的可视化

这里想说说第四点的解决方案。试想一个使用场景,鼠标随意点击编辑器中的某个元素(角色,组件,设置等等),侧栏面板都能轻松可视化包含的所有属性,例如角色的位置、旋转、缩放。不仅如此,用户通过控件可以实时修改关联的数据。以上所描述的功能,在Unity这些工具中都已经实现。那么,它们是怎么做的?

我们可以想象一下,如果编辑器的属性可视化通过人为的添加,那么开发工作量将是规模巨大的。必须通过自动识别的方式,智能显示出来。UE4通过【UPROPERTY】注解,在代码中说明需要可视化的字段属性,通过二次编译生成控件相关的代码。如果走这条路,势必要造一个cpp语法分析器,这不可能。

所以,系统必须提供一个机制取代【UPROPERTY】功能,指示界面系统需要可视化哪些属性,以及如何显示。

我的做法是,为每个引擎相关对象(角色,组件等等)提供一个属性容器,对象自行注册需要可视化的属性,同时对外提供容器访问的接口。当然以上措施还不够,没有解决数据变动实时反馈。

这里参考了JavaFX中的一个数据组件:javafx.beans.property.Property,它提供各类数据的封装与绑定,若两个Property<int>相互绑定,修改其中一个,就能自动修改另一个。当然这里的数据不限于基本数据(int, float等等),还包括集合数据(vector, map等等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChivenZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值