5 Star 34 Fork 11

jims_c / BoomEditor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

BoomEditor是一个windows下用于cocos2d的UI编辑器

cocos2d下的主流编辑器对比

  • cocoscreator ccc的思想和主流引擎编辑器思想是一样的,组件化的系统,资源和代码的统一管理,变量的反射和绑定。这些特性很好,但它还是有自己的痛点:
  • cocos2d下大量项目都使用lua而不是js,ccc对使用lua的人来说,基本没有什么用,即使出了lua版本,但也只是简单的一个解析库而已,很多ccc的控件不能用,更不用提代码反射和绑定。
  • ccc的代码绑定让所有业务逻辑的代码都生成到了一个脚本文件,这在热更新的时候非常不便
  • 控件的丰富虽然方便了程序的开发,但也导致了臃肿和运行效率的下降
  • cocostudio 其实ccs还是可以的,但是在做好2d和做好3d中迷失了方向,结果3d没做好,2d也没做好,典型的,ui界面的动画,看似可以创建多个动画,但其实屁用没有,所有动画都会在布局文件解析为场景的时候全部播放,连一个选择手动播放和自动播放的机会都没有;对于解析布局文件,ccs只给出了解析方法,并没有给出解析方案,有些经验的人才能做到用C++搭建一个框架,然后用ccs解析界面,串起游戏流程,经验更丰富的人才能将布局文件跟脚本关联起来串起整个游戏流程,而这些ccs一个示范都没有给出。
  • cocosbuilder 作为一个ui编辑器,ccb还是很好的,它在c++层给出了解析方案,所有想要关联布局文件的类必须继承一些接口,用户代码通过实现这些接口来绑定变量和回调函数,你一旦理清它的解析流程,就会知道如何串起整个游戏流程,即使维护别的ccb项目,也能轻易上手,但是它对脚本并不友好,cocos引擎目录下的testjs和testlua虽然有对应的脚本解析的列子,但并不实用,对实际项目几乎没有参考价值,网上也没有看到相关的blog去尝试在脚本环境中使用ccb,我有尝试过将ccb的解析和对应脚本关联起来,通过ccb文件自动生成关联的脚本文件,可以用,但比较依赖于具体项目,通用性不大,就没有公布出来,也没有用于具体项目。

在我看来,可能对于大多数开发者来说,并不是想要一个高度集成的引擎编辑器,而只是一个ui编辑器+类似prefab的东西+对应脚本(lua, js)的解析方案就足够了,ccc除了lua的解析方案,基本全齐了,ccb和ccs其实也有类似东西,不过它们都是引用的布局文件,只是引用,但可以改变根节点的一些属性,比如位置,缩放。而ccc的预制则是完全克隆一个,可以对它进行添加删除等操作。

ccs和ccb可以引用布局文件,如果一个布局文件对应一个c++对象或者lua对象或者js对象,那么,如果一个布局文件中引用另一个布局文件,讲道理,那么也应该引用对应的c++对象或者lua对象或者js对象。但是当ccs解析的时候无论你引用了多少布局文件都只会生成一个场景树,并把根节点返回出来,对应的引用对象呢?场景树里面自己找吧。但是ccb在c++层就做得很好,你如果引用一个布局文件,生成整个布局文件的时候它会把关联的对象创建出来并返回给你。在脚本层,ccb和ccs一样只能拿到根节点(我关联ccb布局文件和脚本对象的时候改了不少源代码才关联上的)。

ccs和ccb中的引用来嵌套布局文件,而ccc的prefab则是通过复制的方式来嵌套布局文件,克隆和引用哪个好?引用的话只要改了原布局文件,所有引用该布局文件的地方都可以同步更新,但也必须保持和原布局文件一样,克隆的话虽然可以改动,但是prefab本身的改动并不能反映到用了该prefab的布局文件中,除非选择回退,但是回退又完全撤销了自己的改动跟新prefab一样,但这可能不是大多数期望的用prefab的目的,大多数用prefab的目的应该是引用的布局文件和原布局文件保持大部分一致,但又有自己的单独的一些改动。但市面上没有哪个编辑器这样做。

对比之后,我理想中的UI编辑器的样子大概就出来了,常规的UI编辑器功能+属性可修改的布局文件引用机制+脚本(lua,js)解析方案,这就是BoomEditor

快速开始

打开BoomEditor下GameUIEditor.exe,点击File->OpenDirection,选择本SampleProject目录。该工程是一个斗牛牛游戏界面的简单示范,资源来自某个上线的游戏。发布的时候,选择project->setting,设置发布目录,设置完成后,选择project->publish,发布之后,发布目录下就有用于游戏的资源和布局文件了。代码实例参考Sample-lua和Sample-js文件夹。

参考教程:

解析库说明

解析库在LoaderLib目录下,Loader.js和Loader.lua分别对应js和lua版本,require方式请参考main.js或main.lua。解析库暴露了5个接口出来:

  • setScriptBindingFunc
  • 用于设置布局文件与脚本对象关联的函数,这个函数接受一个字符串指向该布局文件的路径,返回一个应该与该布局文件关联的对象
  • beginLoad
  • 接受两个参数,参数1为布局文件的数组,参数2为这些布局文件解析完后的回调
  • creatByFile
  • 接受两个参数,参数1为布局文件路径,参数为将要成为其父节点的节点(creatByFile不会addChild到这个父节点,只是在解析的时候需要这个父节点的size),返回解析出来的场景树的根节点对象
  • getMember
  • 用于解析后绑定对象到变量,详细参考Sample-js或Sample-lua的代码
  • playAnim
  • 用于播放动画,详细参考Sample-js或Sample-lua的代码

功能说明

FAQ

交流群

qq群:465795366

一些预览

image image

spine的支持

image

空文件

简介

BoomEditor是一个用于cocos的UI编辑器,拥有新形式的布局文件引用机制,完善的脚本(lua,js)解析方案,是cocos下最好用的UI编辑器之一 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/Jims_C/BoomEditor.git
git@gitee.com:Jims_C/BoomEditor.git
Jims_C
BoomEditor
BoomEditor
master

搜索帮助