为什么Unity3D能够产生如此多的插件

 我来答
小豪0663
2017-05-11 · TA获得超过283个赞
知道答主
回答量:174
采纳率:99%
帮助的人:56.6万
展开全部
1、IMGUI,这个真的很重要,Unreal4 编辑器也改用这种架构,传统游戏编辑器的需求无非也就是数据绑定、撤销、版本管理、序列化等几个,没什么黑科技,就是写起来麻烦,Unity3D 的 IMGUI 把这个流程简化到了极限,比如任意时间的实时数据 GUIInspect 等。IMGUI 在制作游戏时很多人骂,但是在编辑器领域反而很有用,Unreal4 在他的 GUI 架构设计里面有谈到这个问题。

2、稳定,无论怎么折腾都几乎不需要重启,这对于编辑器来说实在是难能可贵,具体原因有很多:首先是 C# 作为编辑器脚本语言非常的可靠,比 C++ 多了虚拟机沙盒和编译速度,比 Lua 之类的动态语言多了静态检查和性能优化;再就是架构的设计原因,比如运行时内存模型相对于 Unrael4 的 C++ Hot Reload 要成熟很多,资产管理系统也要稳定一点。

3、高性能,这并不是偶然的,随便说几个处理就可以看出 Unity3D 的努力:主界面的 IMGUI 并不是传统 IMGUI 的基于定时器实现,而是基于 Repaint Event,看看有多少 Unreal4 的游戏在 Slate 的 OnPaint 里面做优化就知道差距了;再比如每个子 Dock 使用独立的 Draw Context,这样一个 Repaint Event 不会触发全局的重绘。

4、Editor API设计科学,这个实在一言难尽,需要对每个子功能来进行一些主流游戏编辑器的对比分析,这里简单说几个,针对简单功能 Unity 抽象出了Menu相关、Inspector相关(CustomPropertyDrawer、CustomPreview等)、EditorWindow相关、Scene相关(Gizmo等)、Undo等扩展,常见功能基本上看个例子就能知道怎么写,当然,很多接口可以设计的这么好也是得益于 C#,比如原生的 Attribute;针对不常见的需求,编辑器部分unity很大方的几乎都是用C#写的,反射之后源码查之扩展之。对比很多编辑器在源码里面加上各种各样神奇的Editor宏来扩展功能。充分提现了 28 原则的 API 设计风格。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式