本帖最后由 哭唧唧的细狗 于 2023-10-30 14:05 编辑
最近有好哥哥问有没有UI引导的功能,这不是忙嘛,弄了一个最小demo版本,保证大家能用,能改,尽量不会看天书,希望能帮助到大家
在DefalutUI里加了显示入口,客官可以自己用个单例之类的维护UI调用显示
InputUtil.onKeyDown(mw.Keys.I, () => {
(mw.UIService.getUI(GuideUI) as GuideUI).guideByStep(1);
})
InputUtil.onKeyDown(mw.Keys.P, () => {
(mw.UIService.getUI(GuideUI) as GuideUI).guideByStep(2);
})
实际逻辑填充的地方,想把哪里的UI弄来显示,就自己添加步骤,加逻辑
// 实际逻辑写的地方
guideByStep(step: number) {
mw.UIService.show(GuideUI);
this.setVisibility(this.button, true)
this.bg.visibility = mw.SlateVisibility.Collapsed;
switch (step) {
case 1:// 第一步
let atkBtn = (mw.UIService.getUI(UIDefault) as UIDefault).AttackBtn;
// 通过localToViewport这个方法能获得即使是嵌套UI的真实屏幕坐标位置
// 如果直接atkBtn.position获得的位置很可能是这位按钮相对于它的rootCanvas的位置
mw.localToViewport(atkBtn.tickSpaceGeometry, mw.Vector2.zero, this.outPixelPos, this.outViewPos);
// 闯入outViewPos这个真正需要显示的屏幕位置
this.cover(this.outViewPos, atkBtn.size,
new mw.Vector2(500, 400), "请点击开始按钮", 0, true)
break;
case 2:// 第二步
this.cover(new mw.Vector2(0, 0), new mw.Vector2(960, 1080),
new mw.Vector2(50, 300), "请滑动该区域进行移动", 0, true)
break;
// 可以继续增加无数步
default:
mw.UIService.hide(GuideUI);
}
}
最小demo在此,客观您请:
guideUI.rar
(99.99 KB, 下载次数: 76)
|