口袋方舟游戏开发 | 如何制作新手引导

简介

游戏完成之后,还需要教会玩家如何进行游戏,这时候就需要一个新手引导的部分来对玩家进行引导.  
这个新手引导预制体可以进行基于ui,位置,和自定义条件的引导

预制体使用

新手引导预制体(点击下载)

简单使用案例

自己使用代码时请注释掉示例


/**
 * 测试ui
 */
class TestUI extends UIScript {

    mBtn: StaleButton
    onStart() {
        this.mBtn = StaleButton.newObject();
        this.rootCanvas.addChild(this.mBtn);
        this.mBtn.text = "测试按钮";
        this.mBtn.onPressed.add(() => {
            console.log("点击测试按钮");
        })
        this.mBtn.position = new mw.Vector2(200, 200);
        this.mBtn.size = new mw.Vector2(200, 200);
    }
}
/**
 * 测试例子
 */
class TestHelper {

    //引导测试
    public static async testGuild() {
        //创建引导
        let guideModuleC = ModuleService.getModule(GuideModuleC);
        // 进行位置引导时的距离
        guideModuleC.setGuideArrowIntervalDis(100);
        // 设置引导箭头的信息
        guideModuleC.setGuideArrowPointerInfo("116496", new mw.Vector(1, 1, 1), false, 10);
        GuideContent.GuideMatrialScale = 1;
        // 创建一个UI引导
        let newGuide = guideModuleC.addGuideStageHandle(1);
        if (newGuide != null) {
            // 获取引导UI
            let uiHud = UIService.show(TestUI);
            let waitSec = false;
            // 添加一个运行函数,打印log
            newGuide.addRunFunc(() => {
                console.error("开始执行引导1");
            })
                // 添加绑定UI按钮
                .addBindUIAndTips(uiHud.mBtn, "点击")
                // 等待1秒
                .addRunFunc(() => {
                    setTimeout(() => {
                        waitSec = true;
                    }, 1000);
                })
                .addCondition(() => waitSec)
                .addBindUIAndTips(uiHud.mBtn, "再点击一次")
            // 添加一个位置引导
            newGuide.addBindWorldPos(new mw.Vector(1000, 0, 80))
        }

        //创建一个目标点引导
        let newGuide2 = guideModuleC.addGuideStageHandle(2);
        if (newGuide2 != null) {
            //UI引导完成后继续执行目标点引导
            newGuide.addRunFunc(() => {
                guideModuleC.triggerGuide(2);
            })

            //创建引导世界坐标(通过寻路导航方式)
            newGuide2.addBindWorldPos_Pointer(new mw.Vector(1500, 0, 80))
                // 普通方式
                .addBindWorldPos(new mw.Vector(1900, 0, 80))
                .addRunFunc(() => {
                    guideModuleC.triggerGuide(3);
                });

            // 在引导3中重置引导2
            let newGuide3 = guideModuleC.addGuideStageHandle(3);
            newGuide3.addRunFunc(async () => {
                let res = await guideModuleC.resetGuideById(2);
                if (res) {
                    guideModuleC.triggerGuide(2);
                }
            })
        }
        // 重置所有引导
        await ModuleService.getModule(GuideModuleC).resetAllGuideDB();

        //触发引导1
        guideModuleC.triggerGuide(1);

        //监听引导回调
        guideModuleC.guideComplateAction.clear();
        guideModuleC.guideComplateAction.add((guideId: number) => {
            console.error("引导 " + guideId + " 完成");
        })

    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值