共5个回答0条评论
分享
为什么没看到Imgui配合反射的游戏引擎编辑器实现的例子呢,全是硬编码?
陈唐
排序方式:被封时间
时间排序由新到旧
- 9 个点赞 👍
imgui的控件采用immediate模式的,传入数据指针,且每帧绘制
基于反射的编辑器,可以简单归纳为“基于类型的控件,基于结构的面板”,它需要一套强大的反射系统去归纳所有类型:
- 基本类型:逻辑,数值,枚举,字符串
- 复合类型:类,结构体
- 容器类型:连续(sequential)容器[list,array,vector,set,queue...],组合(associative)容器[map,hashmap...]
一般情况下,开发者只需要为基本类型和部分复合类型制作控件,为大部分复合类型组织属性面板布局,而容器类型的编辑面板,往往是通过元素类型自动生成和组合的
综上,为什么不用imgui去实现基于反射的编辑器,主要是因为:
- imgui的原生控件是直接将控件咬合在数据指针上,而基于反射的编辑器需要将控件咬合在反射接口上,以此来快速实现一些用户体验的优化,比如撤销重做,元信息扩展等。
- Imgui的优势在于轻量便捷,而基于反射的编辑器,需要使用一套健壮的反射框架,目前主流使用反射框架的平台有UE和Qt,开源的有RTTR,虽然RTTR是一个非嵌入的反射框架,但一套操作下来,还是需要组织大量的代码结构,增加整体代码的复杂度,从长远上来看,确实能省很多事情,但对大部分开发者来说,他们的目标往往是渲染,模拟...,而不是编辑器架构,因此imgui已经够用且很好用了
可以说,imgui只是一个轻量的UI工具包,涉及到反射相关的编辑器架构,它的位置就显得有些尴尬了
编辑于 2023-06-26 15:42・IP 属地云南查看全文>>
Italink - 3 个点赞 👍
查看全文>>
车雄生 - 3 个点赞 👍
你指的硬编码是指使用层面吗,用imgui创建控件时传入的参数比如:坐标及大小都是(x,y,w,h)这种吗?这种写法不算硬码,只是没有可视化编辑器。
unity2019及之前的版本,写编辑器开发都是基于imgui,imgui本身也是开源的:https://github.com/ocornut/imgui
从官网可以看到不但有unity还有ue4 Bindings
发布于 2023-06-28 09:17・IP 属地广东查看全文>>
赵青青 - 1 个点赞 👍
查看全文>>
探寻可能 - 0 个点赞 👍
查看全文>>
白东杰