当前位置:网站首页>引擎开发日志:场景编辑器开发难点
引擎开发日志:场景编辑器开发难点
2022-08-02 03:29:00 【ChivenZhang】
【题外话:引擎特性展示】
以下视频集成渲染、动画、物理、脚本、粒子等模块
物理约束+脚本控制
骨骼动画+粒子特效
最近游戏引擎开发到了编辑器的设计上,自绘控件系统已经完成了85%,可以呈现按钮,滚动框,分割框之类的控件,也能为其自定义事件响应(搭配Plang编程脚本),可以说很顺利。
前几天捋了捋编辑器开发将会遇到的难题,总结了以下几个:
- 界面交互的redo和undo机制
- 多窗口编辑视图的支持
- 可扩展的插件视图
- 引擎对象属性的可视化
这里想说说第四点的解决方案。试想一个使用场景,鼠标随意点击编辑器中的某个元素(角色,组件,设置等等),侧栏面板都能轻松可视化包含的所有属性,例如角色的位置、旋转、缩放。不仅如此,用户通过控件可以实时修改关联的数据。以上所描述的功能,在Unity这些工具中都已经实现。那么,它们是怎么做的?
我们可以想象一下,如果编辑器的属性可视化通过人为的添加,那么开发工作量将是规模巨大的。必须通过自动识别的方式,智能显示出来。UE4通过【UPROPERTY】注解,在代码中说明需要可视化的字段属性,通过二次编译生成控件相关的代码。如果走这条路,势必要造一个cpp语法分析器,这不可能。
所以,系统必须提供一个机制取代【UPROPERTY】功能,指示界面系统需要可视化哪些属性,以及如何显示。
我的做法是,为每个引擎相关对象(角色,组件等等)提供一个属性容器,对象自行注册需要可视化的属性,同时对外提供容器访问的接口。当然以上措施还不够,没有解决数据变动实时反馈。
这里参考了JavaFX中的一个数据组件:javafx.beans.property.Property,它提供各类数据的封装与绑定,若两个Property<int>相互绑定,修改其中一个,就能自动修改另一个。当然这里的数据不限于基本数据(int, float等等),还包括集合数据(vector, map等等)。
边栏推荐
- [Popular Science Post] I2C Communication Protocol Detailed Explanation - Partial Software Analysis and Logic Analyzer Example Analysis
- 联阳IT6561|IT6561FN方案电路|替代IT6561方案设计DP转HDMI音视频转换器资料
- 树莓派4B打开文件管理时出现闪退
- PCB设计思路
- GM8284DD,GM8285C,GM8913,GM8914,GM8905C,GM8906C,国腾振芯LVDS类芯片
- MQ-5 可燃气体传感器与 Arduino 接口
- AD PCB导出Gerber文件(非常详细的步骤)
- 使用批处理脚本修改hosts文件
- Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读
- How to quickly build your own IoT platform?
猜你喜欢
随机推荐
如何在 Scala 中科学地操作 collection(一):集合类型与操作
哈工大2021机器学习期末考试题
【Arduino 连接DHT11 湿度和温度传感器】
深度学习理论:测试集与验证集的区别及各自用途
Typora use
三相同步发电机的空载短路的simulink仿真
移动云物联网预研及阿里云开发对比分析
PCB设计思路
Scala 中的集合(二):集合性能比较
Industry where edge gateway strong?
同时求最大值与最小值(看似简单却值得思考~)
【科普贴】SD卡接口协议详解
分布式消息队列平滑迁移技术实战
MPU6050 加速度计和陀螺仪传感器与 Arduino 连接
【MQ-2 可燃气体和烟雾传感器与 Arduino 配合使用】
与TI的lvds芯片兼容-GM8284DD,GM8285C,GM8913,GM8914,GM8905C,GM8906C,国腾振芯LVDS类芯片,
[Arduino connected to GP2Y1014AU0F dust sensor]
【Arduino连接GPS 模块 (NEO-6M)读取定位数据】
uniCloud address book combat
Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读









