装备强化系统
前言:
做到物品装备的小伙伴很多都是有强化洗练等等的需求,而星火的官方又没有预制强化系统(星火官方赶紧安排下),所以只能自己写一个。实现的效果类似war3中的强化石强化装备,即点击背包中的强化石,然后再点击装备强化。作为小白的我不用多说了,中途必然会碰到很多坑,那么下面我们一起来研究下怎么写好(避坑)这个强化系统吧。还是先来看下效果,比较粗糙,大家自行优化显示细节。
实现思路:
想要点击强化石然后再点击装备这样的效果。一开始我自然会想到把2个触发事件写到一起,就是点击了强化石事件,然后又点击了可强化的装备事件,那么执行强化的逻辑,但是这个思路被大佬们狠狠的批评了(想法太天真啦)。显然,触发器中不可能做到一个触发器中判断2个事件的,因为在点击强化石的那一刻事件就触发了,在触发的那一刻,那一秒,那一帧怎么可能同时还触发了点击可强化的装备的事件呢。
经过各位大佬的指点终于想到一种解决办法,就是点击强化石的时候给自己加一个状态,比如我已经点击了强化石,那么现在只需要再来一个点击物品的触发器,当我点击需要强化的装备的时候,判断我是否已经具备可以强化装备的状态就行啦。
好的,明白了思路,下面我们开始写逻辑。
再次感谢大佬们的指导,@皮卡鸽、@心如梦。
实现步骤:
第一步:制作强化石,客户端写点击事件,服务端给自己加可以强化装备的状态。
这一步应该比较简单,实现的思路也比较多,大家可以自己考虑,我这里用的是单位初始属性(数值),原因就是简单好用。
那么我们先去写一个强化石等级的自定义属性,相信大家都找的到吧,如下图。(强化石等级为0表示不可强化,等级为1代表初级强化石,等级为2代表中级强化石,以此类推)。
好啦,下面我们要实现点击强化石修改自己的强化石等级了,那么用什么方式来实现呢?
是触发器还是物品技能呢?都可以啦,我这里用的触发器。所以下面我们来写一个强化石。大家应该都会写吧?初级强化石就把强化石等级修改为1,中级就修改为2,以此类推。
接下来是触发器逻辑,客户端点击强化石时,发送事件到服务端,如果点击的是强化石,那么修改强化石等级为1。
那么有小伙伴肯定又会有疑惑了 。
问题: 为啥不做成使用即消耗的物品,强化石不就是使用后就消耗掉吗?
啊,这个问题真好。想一想,我点击强化石,强化石就立马消失这样是不是有点不合理?应该是点击强化石给玩家一个反馈我点击了强化石,然后在点击可强化装备的时候消耗掉强化石这样才合理嘛。
这里还有一点要提,点击强化石的时候要阻止物品信息面板显示而且还要给玩家一定的反馈让玩家知道我已经点完强化石啦。这里我用的是序列帧边框,点击强化石就显示这个动态边框(需要的小伙伴我们下期见),这里先关闭旧边框ui再打开新边框ui的目的是,如果玩家点击多个强化石,确保只激活一个。注意使用全局变量。
第二步:客户端点击可强化装备,发送事件到服务端判断
下面是点击可强化物品的触发,加上条件判断,当我具有可以强化装备的状态时才执行下面的逻辑。点击物品时同样要阻止信息ui跑出来。点击完以后我们发送强化事件给服务端告诉服务器玩家要强化装备啦。这里事件里要带上触发事件的物品,服务器得知道你强化的是啥。
第三步:服务器判断强化是否成功,并告知客户端结果。
这里要注意,强化概率要在服务器里写,不然大佬就要指点你了。这里的逻辑应该也比较简单:
1. 我们得把强化石保存起来,因为待会强化完装备以后要删掉,注意使用全局变量。
2. 强化成功,删除原物品,创建新物品,删除强化石,修改玩家强化石等级为0,即不可强化状态,发送事件告诉客户端你成功了(我这里1代表是成功)。
3. 强化失败,删除强化石,修改玩家强化石等级为0,即不可强化状态,发送事件告诉客户端你失败啦(我这里0代表是失败)。
第四步:客户端接收强化结果,给予玩家反馈。
这里逻辑也比较简单,效果自己写。如下图,应该没啥要注意的地方了。
总结:
第1步:制作强化石,客户端写点击事件,服务端给自己加可以强化装备的状态。
第2步:客户端点击可强化装备,发送事件给服务端,告诉服务端,我可以强化某个装备了。
第3步:服务端接受事件,判断装备是否强化成功,并告知客户端。
第4步:客户端接受结果,给予玩家反馈。
是不是很简单,相信小伙伴都学会了吧,教程还有诸多不足之处,大家多多指点相互学习。
以上就是本期教程的全部内容啦,教程还有诸多不足之处,大家自行优化逻辑。我们下期,序列帧边框见。