素色流年783 发表于 2021-2-12 07:16

为什么Unity3D能够产生如此多的插件(中间件)?

为什么Unity3D能够产生如此多的插件(中间件)?

今早我梦醒了坎 发表于 2021-2-12 07:25

不请自来。利益相关:Unity 插件开发者,Fireball 引擎开发者。
先回答第一个问题,Unity 插件咋这么多捏?
Unity将插件开发的门槛降低到了极致,体现在:
编辑器和引擎 API 风格相似,甚至连 UI 绘制方式也差不多,只要会做游戏就能试着开发插件。插件直接就能在项目里新建脚本,随意修改,自动加载……插件使用 C# 开发,配合 Unity 的跨平台 API,可以同时兼容不同操作系统。Unity提供了 ScriptableObject,能够很简单的生成数据。
Unity 的插件能够无缝的嵌入到工作流里面,并且提供了无数的 API,能应对资源生产、版本管理、场景辅助、引擎扩展、自定义渲染、甚至调试脚本等各类需求。在 Unity 中使用插件非常方便,AssetStore直接下载,即插即用,而且基本都附带了各种 Demo、Prefab、文档,简直不要太好用。在此基础上,Unity 又打造了 AssetStore 这个恐怖的生态圈…… 好处就不啰嗦了想想 AppStore。

================== 我是诚聘厦门JavaScript开发者的分割线 =================

下面回答第二个问题。其实 Unity 的插件体系也不是完美的,Fireball 做为一款初出茅庐的自研产品,也总结了一些自己经验,下面谈谈和插件有关的部分:
Unity 的插件体系是在编辑器的基础上逆向开发出来的,导致虽然入门容易,想要做出比较复杂的插件难度却很高:
需要进行复杂的 UI 绘制时,那套立即式的 UI 系统简直要人命…… 还是 Fireball 的声明式 UI 来得好用。Unity 对插件开发者的需求其实并不是特别了解,在亲儿子 uGUI 推出之前 Unity 才恶补了一下插件体系。
Fireball 的解决方案是正向开发。插件体系一开始就是编辑器和引擎的核心内容,并且使用和编辑器一样的 Html5 技术来开发。
我们使用插件来实现整个编辑器的大部分功能,因此我们提供的框架本身就能支持各种比较复杂的需求。我认为需求能用合理的步骤实现后才应该考虑如何尽量降低学习曲线,而不是像 Unity 一样一开始给一些很简单的 API,结果要做复杂插件的时候却再也简单不起来了…… Fireball 的开发本身也是验证插件系统的过程,编辑器内置的插件又是开源的,插件作者就有了很多天然的范例可以学习,不容易踩到坑。
Fireball 提供了基于包的资源管理方案,不但能从 AssetStore 下载插件,还能对插件进行版本管理。Unity 的 ScriptableObject 只能用来储存解析过的数据,但缺少了和资源之间的关联性。当资源从外部更新之后,插件读取到的 ScriptableObject 仍然是陈旧的,还是要用户手工操作来强制刷新插件数据。
Fireball 则是更进一步开放了整个 Assets 资源库的 API,用户可以自由定义任意资源的导入配置、导入后的持久化方式,这样插件的资源可以和内置资源一样体验到一样的工作流。
Unity 的 Assets 资源库使用的是一对一的资源导入方式,每份导入后的资源只能有一份原始文件。这样一来如果我们要做一个 Texture Packer 那样的功能,希望文件夹下的任一贴图改变时,都能自动触发整张 Atlas 大图重新 Packing 时,就做不到了!
Fireball 则是提供了基于文件夹的资源导入机制,可以将文件夹下的所有资源都映射到一份导入文件中,很直观地解决了以上问题。
另外,Unity 使用后缀名来识别资源类型,那些常用的 .txt .json .plist .xml 格式简直就没办法识别了,会造成多个插件争抢同一个后缀名的现象。
Fireball 因为支持上面说的文件夹导入机制,所以可以给文件夹增加后缀名来规避这个问题。这样一来那些类似 BitmapFont, Atlas, Spine 等没有统一后缀名的数据,也能很好的通过文件夹的后缀名(.fnt .atlas .spine) 进行识别。


最后是广告时间,目前 Fireball 引擎还在内测,官网是 http://fireball-x.com/ 求关注谢谢!

井底燕雀傥 发表于 2021-2-12 07:28

组件式开发, 耦合低到难以想象
再辅以微软的C#大法, 那味道那叫一个酸爽
重要的是, 写纯代码终于可以挣钱了!

当当当当裤裆坦 发表于 2021-2-12 07:36

“国内的自研引擎开发商可以从中学习到社么?希望从技术和商业多方做解答 ,”如果国内有哪怕一个引擎开发商,请你站出来告诉大家,asset store,相当于app store,也没什么好解答了吧,
说点技术问题,据说UNITY3D一开始只是想做成个特效编辑器,结果现在整个开发框架,连我这个架构师都汗颜,VISUAL STUDIO, ECLIPSE, SUBlime都没有达到的高度,unity3d editor兼顾到教学推广部分那都是小儿科,国内那些“引擎开发商”一开始也是从做工具开始吸引一些人气,也真有一开始就做引擎核心的,结果连一点人气都没有,连工具都不如,之前提到那几个工具,如VISUAL STUDIO,无不想做成平台的,反而成了工具(微软CEO水平如此),但是人家UNITY一开始只是想做工具的,却成了平台

因醉鞭名马幌 发表于 2021-2-12 07:42

在于无缝的平台 asset store。

其实插件数量增加并不是什么困难的事

有大把的闲得无聊的人想贡献代码和汗水

苦于没有平台,只能自己搞

在github这类平台级的开源网站出现之前,开源团体是个什么量级?现在呢?是个鬼都能做个开源工作者。

即使平台可能除了云空间没有任何功能。

聚集需求最相近的所有用户是平台的最大价值。

unity插件一样,这就好像appstore一样,产销一条龙,你插件的目标用户全部在这个平台下活动,你开发好了就可以提交卖钱,不要太爽。
页: [1]
查看完整版本: 为什么Unity3D能够产生如此多的插件(中间件)?