正义集结对于新手引导流程总结
新手需求:
- 满足各个页面之间跳转,返回。并且强制点击某个按钮,或者做某个操作。延迟操作,切换到某个页面,可能有动画弹出,切换期间有闭眼功能,都要对新手引导做相应的延时处理。
- 新手引导表现类型:有手指提示点击,语音弹出,弹窗等。强制类型有重复引导,点过既过,强制但只会出现一次。
- 断线重连引导断掉问题,杀进程引导断掉问题。
- 上一步记录问题。
- 避免新手引导卡死问题,以及措施。
- 新手引导实时计算变化的,所以需要在Update中每帧去计算,判断。所以每帧的工作量不能太大。防止卡顿。
- 引导多发生在页面切换后出现,并且,引导为强制的,避免用户在切换页面快速点击按钮,这是引导还未触发,造成的点穿问题。所以在新手引导期间切换页面要做禁输入操作。
具体步骤:
根据需求分析,新手引导多在主界面的某个活动的点击查看,任务领取,战斗选择关卡,英雄详情页面升级等等。所以才用按照页面名称的方式分组新手引导步骤,在加载配置文件时,建一个以页面为Key的映射表。
当到达某个页面,获取当前UI层最上层的UI名称。拿到对应的Guide(新手流程)表,遍历是否满足条件,满足就进行相应的引导。否则,不会触发引导。
Proto的字段:类似只需考虑意思即可,语法不重要。
message NewGuide
{
required string UIName = 1; //顶层的UI
required Int32 GuideID = 2; //GuideID
required (这里可以写成枚举类型) GuideType = 3; //GuideID
required string ButtonID = 4; //手指寻找的ButtonID
required bool IsAbandon= 5;//是否放弃,true则Guide失效不会被触发。反之。
required float FingerDelay = 5; //手指延迟出现的时间
required float RunKeyWord= 5; //用于区别复杂页面的字段(有的页面有子页面)
required (类型是跳转的枚举用MGTT代替) LoginMainJump= 6;//断线重连之后的跳转
required string MGTTParam1 = 6; //跳转参数1
required string MGTTParam2 = 7; //跳转参数2
required int32 ClickTimes = 8; //点击几次后强制跳过,防止卡死。
repeated GuideConditions GuideCondition = 9;//详情列表
}
//详情列表是根据 GuideType 或者一些类型 ,读取相应的字段,执行不同的操作。
message GuideConditions
{ required string VoiceKey= 1; //语音的Key
required int32 VoiceTime= 1; //语音的持续的时间(自动关闭)
required (枚举) MGTT = 2;跳转//代替ButtonID的事件,执行跳转。
required string MGTTParams1 = 3;跳转参数1
required string MGTTParams2 = 4;跳转参数2
required bool IsNeedClick= 5;是否需要点击才触发跳转
required (枚举类型)MVT = 6;判断执行Guide的条件枚举
required (枚举类型)IVT = 7;判断执行Guide的条件枚举
required string IVTValue = 8;判断执行Guide的条件的 参数 和 MVT 对应
required string ValueMin = 9;判断执行Guide的条件的最小参数
required string ValueMax = 10;判断执行Guide的条件的最大参数
// ValueMin ValueMax IVT对应的值落在[ValueMin ValueMax)区间中为true。
//反之为false IVT MVT
required int32 VoiceOrder = 11;执行语音的顺序
}
IVT MVT 是在一个List 的结构中,需要每一条满足才会触发Guide。
上述是一条引导的配置字段。
新手引导暗坑—血泪史
- 新手引导,每一条状态等相关信息都会写在数据库中,所以在Xml配置文件中,只能增加一条,而不可以删除。
- 在该账号被创建时,就会在加载配置表的相关信息,写入服务器。所以修改被数据库写入的
数据字段,需要重启服务器。例如 修改 IsAbandon的状态。 - 引导多分为阶段来控制,不要每一步之间都要有联系,否则特别难控制。
- 衔接步骤 强引导 (重复检测的引导)不能作为下一步引导开启的条件。
可跳过步骤 不能作为下一步的引导开启的条件。可跳过步骤:为了各个页面之间跳转需要的步骤,但是如果执行到这一步的前一步杀进程,再次进入客户端,这一步引导就没必要在进行触发。(例如,结算奖励:玩家打完1-1,胜利应该到结算界面点击下一关按钮,去战斗准备页面,杀进程,下次进来就没有必要跳到结算界面进行引导,而是直接跳到去打1-2的引导,所以执行1-2的引导的开启条件就不可以依赖结算界面引导完成,否则引导就断掉了) - 寻找引导完成条件,可以依赖于在这一步触发的时候,某一步骤一定完成了,或者某一步骤
一定没有完成。再加上相应的IVT或许MVT。就不会出问题。
这篇为相关问题的大致概括,余下几篇,会详细介绍触发原理,IVT MVT的实现运用机制,以及具体问题的具体解决方案。