当前位置:网站首页>引擎开发日志:场景编辑器开发难点
引擎开发日志:场景编辑器开发难点
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等等)。
边栏推荐
- 【Arduino connects SD card module to realize data reading and writing】
- 【土壤湿度传感器与 Arduino 测量土壤湿度】
- 【MQ-2 可燃气体和烟雾传感器与 Arduino 配合使用】
- 【MQ-3 酒精检测器与 Arduino检测酒精】
- 最第k大的数的一般性问题
- 振芯科技GM8285C:功能TTL转LVDS芯片简介
- Vision Transformer(ViT)论文精读和Pytorch实现代码解析
- 电子密码锁_毕设‘指导’
- How to quickly build your own IoT platform?
- 案例|工业物联网解决方案·智慧钢厂高性能安全数采
猜你喜欢
联阳IT66121FN提供SDI转HDMI方案分享
Out of memory error on GPU 0. Cannot allocate xxxGB memory on GPU 0, available memory is only xxx
01背包问题(动态规划)
【Popular Science Post】Detailed explanation of MDIO interface
【科普贴】SD卡接口协议详解
出差电子流应用实战
【TCS3200 颜色传感器与 Arduino 实现颜色识别】
【MQ-3 酒精检测器与 Arduino检测酒精】
【霍尔效应传感器模块与 Arduino】
Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset I3D论文精读
随机推荐
uniCloud使用
【Arduino 连接GP2Y1014AU0F 灰尘传感器】
Typora use
【使用树莓派时碰到的一些问题】
【科普贴】MDIO接口详解
[Spark]-LSH局部敏感哈希
如何快速搭建属于自己的物联网平台?
Go 程序太大了,能要个延迟初始化不?
TimeSformer视频理解框架:视频理解中的Transformer
关于IIC SDA毛刺的那些事
振芯GM7123C:功能RGB转VGA芯片方案简介
《scala 编程(第3版)》学习笔记3
uniCloud通讯录实战
Arduino点亮数码管
GM8284DD,GM8285C,GM8913,GM8914,GM8905C,GM8906C,国腾振芯LVDS类芯片
【MQ-2 可燃气体和烟雾传感器与 Arduino 配合使用】
【科普贴】SPI接口详解
【Popular Science Post】UART Interface Communication Protocol
VCA821可变增益放大器
龙讯LT6911系列C/UXC/UXB/GXC/GXB芯片功能区别阐述