Construct2,一个字总结就是快。Construct2插件大神Rex开发了许多插件,使用引擎的过程肯定会使用Rex的插件,这里先对Rex表示感谢。傅子恒老师是Construct2的布道者之一,傅老师的《Construct2游戏程式设计》适合初学者学习。
一、插件
Construct2引擎跟unity3D引擎在使用插件上有的一拼,项目开发过程中需要引入多个第三方插件,有时也需要自己写两个插件。无奈引入插件的行为只能说可扩展性强吧。
C2可扩展的插件包括behaviors、effects、plugins三种。
用过的behaviors插件如下
1.设置对象做椭圆运动---cicle
2.实现通过名字创建特定对象,需behavior插件rex_bnickname与plugin插件rex_nickname一同引入
3.冷却时间,倒计时使用,需behavior插件rex_cooldown与plugin插件rex_timeline一同引入
4.rex_moveto,设置对象移动到某个位置,用它做前端爆资源的特效
5.rex_pin2imagepoint,官方只能将对象pin到另一个对象imagePoint=0的位置,只有一个pin点,使用此行为可以pin到某个对象的不同imagePoint上
6.liteTween,缓动动画
用过的effects插件比较少,只用过浮雕颜色anaglyphcolor及背景模糊特效basicBlur
用过的plugins插件如下:
1.JSON_for_construct2-master---JSON数据存储与使用
2.callJS,调用外部js
3.scml是C2的spriter骨骼动画插件
4.spritefont+,第三方字体插件;C2SpriteFont制作工具,C2字体制作工具,配合C2自带的spritefont使用
5.rex_gfsm为FSM插件,有限状态机
6.个人将pomelo及superSDK封装为C2插件,C2的数据类型较少,数据处理这块做的不太好,游戏客户端与服务器的数据处理及通信在这两个插件中完成。
开发过程中需要哪种功能的插件直接到官方论坛找。
欢迎游戏爱好者及开发者加入qq群180911504,积极与群中大佬交流,共同学习进步,群文件中有插件管理器,包含rex的最新插件,还有各种示例,这里感觉群中大佬提供的帮助。
二、使用心得总结
1.将全局变量统一放到一个事件表中,我习惯命名为Global,统一管理全局变量。
2.不能过分使用全局变量,根据变量的作用域分类,只跟某个对象有关放到对象的局部变量中;如果变量只在当前layout有效,可以考虑放到对象的局部变量中,或者当前布局所有事件放到一个大组里,变量声明在当前组内。
3.根据功能,合理使用Group。多添加comment(注释)。
4.多使用Function,如果当前布局事件过多(如超过200条),将所有函数放到一个事件表中,然后在主事件表中引入。
5.资源管理上,在Object types下建立子文件夹;对象动画较多或者打算将多个对象合并到一个对象上(也建议这么做)时,对象动画位置建立子文件夹。
6.对象尽量少,若多个对象有不同动画但是功能完全相同,统一成一个对象上,通过不同动画控制显示或者通过同一动画的不同帧来控制。
7.如果不使用 C2默认的loader布局,将use loader layout 选为 yes , 将first layout选择个人定义的加载布局,但是如果个人设置的加载布局稍微有些复杂,C2的默认的loader布局依然会显示,此时将发布包的logo替换即可。
8.若浏览器不支持webgl,运行期间会出现闪退,禁用webgl即可,此时为canvas。
9.若一个物体如boss由多个对象组成,将多个对象放到一个container中;希望某些对象同时创建或者删除,也考虑使用container,很好用。使用container时,选择container的某个对象,此时可直接操作该container的其他对象,选择当前对象的过程也是选择当前整个container。
10.对于行为完全相同的对象,可放到同一个family中。
11.将要声音的格式转为wav,引入的过程,引擎会自动转为ogg和m4a两种格式。
12.spriter在construct2中支持良好,很多情况下都可以选择骨骼动画而不是帧动画,尤其是对象数量较少的情况下。
13.C2可打包成多种类型,如H5,Android,Nw.js等。打包成app,需之后使用phonegap build等工具构建app。
14.set size 不能和 set scale连用,相当于同一种操作,后者会覆盖前者。
15.设置子弹属性,应先设置速度,再设置角度,因为如果设置角度,速度若为0,不生效。
16.c2插件大神rexRainbow说,c2没有什么是一个wait不能解决的,如果有,那就两个。合理使用wait0,填引擎自身的坑。
17.关闭不需要碰撞对象的碰撞(默认都开启),提高前端性能。
18.C2数组push元素,之后clear,不会生效,push的元素依然在。
19.C2若使用全套物理引擎即对象引入physics属性,对于pc端,为保证性能,物理对象不能超过100,移动端不能超过40。物理对象只能与物理对象交互。
20.隐形Button不可用,设置成visible后,touchEnabled也被禁用。
21.Form control下的对象如Button处于游戏视图最上层。可直接更改css更改样式。
22.callJs不可在on start of layout使用。
23.C2中类型有限,而且调用calljs将text类型的变量作为参数时,应如下"output("""&userID&""")",注意userID两侧的引号,若无引号"output("&userID&")",会导致获取到的userID不是字符串,而是没有引号的字符串,很奇怪。
24.invisible的对象仍可touch,如果想实现打开某个页面后,下面图层的对象不可touch,可采取给不可touch的对象加入控制变量及cooldown属性(冷却时间设为0.1秒),当页面打开后,控制变量更改,cooldown request,当cooldown finish时,控制变量重置。
25.当前开发的游戏,服务器使用node,与前端通信通过pomelo websocket,数据的预处理等操作需要在Construct2外部处理,采用封装pomeloClient为C2插件,同时数据处理等逻辑也在插件中完成。
26.C2中无法实现console.log(),只能设置Text值进行输出,可使用callJS, js中输出。执行某个操作但是需在回调中处理逻辑,需封装成插件。
27.talkingData等接入,需在index.html文件中引入外源文件。
28.superSDK接口调用,数据均在回调中获得,采取将superSDK封装成C2插件的方法。
每个引擎的使用过程中都有许多熟悉和注意的,在使用中提升~ 引擎的使用时间不算长,若有不对的地方希望大神指正~
暂无关于此日志的评论。