个人认为引导大致分为3种
1:强行引导,就是必须按照引导的点击。
2:弱引导,就是有个什么东西在指引用户或玩家点某个地方,不点也行
3:暗示行引导,通过设计等手段来暗示用户或者玩家点击,比如按钮稍微变量一点点,点过后恢复正常等
先来说说第一种引导:强引导
就是必须点规定的位置,这个看是很好实现但是实际上很难搞定。
引导如果不做成通用的就是到处都是,代码乱成一锅粥,很不好调试。也不好维护。策划改一个引导你还得改代码,搞不好还出bug.
写成通用的怎么写就成了关键。
实现方法有很多。
1:画个框框只有框框里接收点击事件。这个方法很简单很快很奏效。但是bug很多。你确定你画出来的形状和你要点击的区域一模一样么。
有一点点差距就有可能点出去。触发别的事件。有可能就弹出了个ui把引导挡住。导致游戏卡住不能进行。
2:点哪都对,直接下一步。这个的利弊大家自己想。
3:就是播放动画。根本没有引导。点击一下播放一段动画。这个很叼。但是动画谁做,美术做资源会大。程序做我只能说呵呵。
4:自己写一个屏蔽层,屏蔽所有事件。并且发放事件。个人比较喜欢这个做强制型引导。下来我们来谈谈这个怎么实现。
首先大家要知道引导的时候不一定是新手时期,有可能之助手之类的功能弹出来的引导。
比如叫你升级装备,升级建筑。
但是你这个时候等级好不到,或者没有装备,没有建筑。可以建造建筑但是没有建,或者等级不够等各种原因不能建。
一旦条件不满足就需要做其他处理。比如终止引导等。
但是要做到这个很难。有的朋友说了。只要判断一下就好了。但是说的轻松。你真正做过么。
导致条件不满足的可能性有成千上万中。你要挨个写验证么。这明显是一个码农的行为。而且这个码农可能是智障。
这里我用的是检测ui的方式来弄的。不管条件是否满足。只要你做了操作ui就会有反应。
比如你要引导他升级技能。但是他等级不到没有这个技能。点击升级的位置你的游戏界面就会出现等级不够的提示,而不是升级的界面或者其他什么东西。这时你检测的ui变化就不是你想要的变化。你就可以做相应的操作了。要想检测ui变化就需要统一管理ui我在另一篇文章里写了。点击这里。统一管理了就可以发送ui变化的相应事件了。比如ui层添加了一个名字叫升级成功的弹出层。
好了。这样就可以做到高级容错了。并且100%容错。
接下来谈谈引导的做法。
我们需要建立一个引导管理类。他知道当前步骤点击那里,在屏幕上绘制什么图形等信息。
这个引导类接管了输入事件的管理。他屏蔽了所有的输入事件。并且分发输入事件。
比如玩家点击了屏幕时。
引导类会接收并且屏蔽掉该事件。然后检测这个事件的点击位置是否是当前引导所需要的位置。
如果是就会发送一个本次引导所需要点击的中心位置坐标的点击事件。这个就确保了100%点击到正确位置。
而玩家点击位置有偏差也会被修正或者无视。
当你检测的ui发生了正确的变化时就可以等待这一步引导已完成的事件了(如果不正确就需要终止引导或者做其他处理)
当接收到这一步已经完成的事件的时候引导类就会把下一步的数据更新成正在进行中的这一步的数据。
有人会问完成事件在哪发。比如引导升级技能。当升级技能完成后你发个技能升级完成的事件就行了。引导类会监听这个事件。
每一步监听什么事件策划配置在表里。点击位置啥的都配置在表里。
如果是listview 类的东西 在引导的时候需要重置他的位置。比如世界地图上的任务地点啥的需要在程序里获取。因为那东西可能是随机生成了。
是不是很简单并且很强大。而且便于维护。东西都是策划配的。
有些新丁会问,策划要在引导过程中显示对话怎么办。我只能说你自己想。这都不会做什么游戏。
接下来谈谈弱引导。这个就简单的多了。
因为不是强制的, 点到了其他地方取消引导。
和强制引导比起来。不同的地方就是引导类不需要屏蔽输入事件。当玩家不跟随引导时取消引导就好了。
暗示行型引导更加简单。只需要把哪里没有提示的进行提示就好了。提示要有优先级。不能好多东西一起提示。提示完了存起来就好了。
其实我感觉引导应该是
当玩家停止操作多少秒后出现引导
这个引导的内容是根据玩家当前的状态推算出来的
就是这个玩家这个时候应该去做什么
欢迎转载,转载请标明出处
网友评论