CocosCreator工作生活

如何较为优雅地实现新手引导功能?

2019-07-21  本文已影响56人  张晓衡

细心的你有没有发现公众号最近推文变得密集了,Shawn上半年加入了一个组织,又历史性地进入了新的轮回:低迷、迟钝、郁郁寡欢...,如果你看我这篇文章的伙伴估计知道,我的抑郁症状又周期性的发作了。在6月下旬,因为一些事情和变故,Shawn又决定离开组织,同去年一样同样是7月份,又要开始踏上向独自的冒险旅程。

自从下定决心的一瞬间开始,之前的束缚在慢慢被释放,其实我早已发现写公众号、帮助大家解决问题,是我缓解症状的良药,于是不计成本地在公众号上投入,近斯更是像被打了鸡血一样,早上 5:30 准时起床,做计划、收集、整理、撰写公众号内容。

公众号现在已经可以创收了,大概每天0.2~2元的样子,看下图:


image.png

离开组织让我少了思想上的束缚,通过两个月的早起,锻炼出了新的生物钟时间,是否应该写点更为有用的东西呢?想当年用 Cocos2d-js 做的 SLG 游戏中,有不少技术亮点都可以迁移到Cocos Creator上来,虽然早已有过想法,但懒于行动,现在就开始写题目是:《Cocos Creator 项目:如何较为优雅地实现新手引导?》

先看这个视频:

新手引导演示.jpg

https://www.bilibili.com/video/av60001770/

啰嗦了这么多,开始今天的正题。


如何较为优雅地实现新手引导功能?

早期的项目中Shawn遇到游戏终于要完成了,辛苦了一阵满以为可以稍微放松一下了,但策划、运营要求,增加一个他们认为非常“简单”且重要的功能:新手引导

回想起当年,接到这个任务时的感觉是手脚冒汗、天晕地暗、日月无光,游戏代码本来就千疮面孔,逻辑错综复杂,根本不知道该怎么下手?更困难的是,游戏本身功能和需求还不稳定,老板随便一个想法可能就会被改、改、改...,我该怎么办?

在这种情艰难的情况下一定要,需要保持冷静,在痛定思痛之后,我开始了引导功能的开发,在做的过程中一不断积累,编写了一套配置式、可编程的引导框架,然后交给其他开发人员或策划人员做具体的引导内容,真的是“杀不死你的会使你更强大”

一、常规实现新手引导的困难

通常实现新手引导的困难在于,它与当前需求、功能密切相关,而且稍有不甚连正常流程都走不通。下面一起看看新手引导到底有那些痛点。

开发中的痛点

  1. 需要在正常流程中插入引导代码,干扰流程;
  2. 引导代码的增加会影响原有代码逻辑,增加维护难和成本;
  3. 界面或需求的变化会导致引导功能大幅修改,甚至重新制作;
  4. 手指提示对应的矩形区定位麻烦,不能简单使用固定的位置和矩形大小;
  5. 编写引导的代码也很困难,需要策划—程序之间高度配合。

期望的编程体验

在了解到传统的引导制作过程中的难点与弊端后,一直在思考没有更好的实现方式,我心中的引导功能的编程方式希望有以下几点:

  1. 引导功能代码,不能混入正常游戏逻辑代码中,后患无穷,应尽量分离;(难以忍受优雅的代码被无情的打乱,更难忍受糟糕的代码被弄的支离破碎)
  2. 界面只发生简单的UI位移、Size大小、节点层次的调整,不需要修改具引导代码;
  3. 定位UI指引矩形区域应尽可能简单,能自适应不同的屏幕尺寸;
  4. 最好能做到策划人员都可以来制作部分流程引导;
  5. 在引导需求明确、游戏功能正常的情况下,制作一个常规的引导步骤应该非常快捷。

下面是我使用Cocos Creator 官方 demo-ui 工程上嵌入的引导案例演示:

demo体验地址:
http://example.creator-star.cn/demo-ui

引导配置:

module.exports = {
    name: '进入商店',
    debug: true,
    autorun: true,
    steps: [
        {
            desc: '点击主界面主页按钮',
            command: { cmd: 'finger', args: 'Home > main_btns > btn_home'},
            delayTime: 1,
        },
        {
            desc: '点击主界面设置按钮',
            command: { cmd: 'finger', args: 'Home > main_btns > btn_setting'},
        },
        {
            desc: '点击主界面商店按钮',
            command: { cmd: 'finger', args: 'Home > main_btns > btn_shop'},
        },
        {
            desc: '点击商店充值按钮',
            command: { cmd: 'finger', args: 'Home > Shop > btnCharge'},
            delayTime: 2
        },
        {
            desc: '点击充值界面关闭钮',
            command: { cmd: 'finger', args: 'chargePanel > btn_close'},
            delayTime: 2
        },
    ]
};

Chat 大纲:

本篇 Chat 从开发痛点出发,在 Cocos Creator 项目中使用一种配置试可编程的新手引导编程体验,你会获得下面收获:

  • 分离引导与游戏之间的逻辑

    • 引导操作流程分析
    • 上帝模式—观察场景中任意节点与事件
    • 任务式引导 task 与 step
    • 引导任务的 JSON 式表达
  • 点击操作的引导实现细节

    • 节点定位器的实现
    • 节点遮罩的实现
    • 触摸事件的拦截与放行
    • 目标节点触摸完成监听
  • 设计一个简易的引导任务框架

    • 引导框架—串联异步引导步骤
    • 引导步骤—步骤生命周期回调与指令
    • 指令设计—实现手指动画指令
  • 自动化引导更多的可能性

    • 浏览器自动引导实现
    • 录制游戏的操作流程
    • 基于引导任务的自动化测试

欢迎扫描 GitChat 分享卡:


gitchat.jpg

感谢关注「奎特尔星球」公众号,愿我们一起成长!


上一篇下一篇

猜你喜欢

热点阅读