「自制卡牌游戏DIY」实时同步属性信息

前天 23:0414 浏览主题教程
我正在尝试使用『星火编辑器』制作一款卡牌游戏。
在上一期,我们为玩家点选单位及移动单位的指令制作了合适得体的表现,并顺利通过测试。但是,当玩家选中单位时,还需要让玩家看到选中单位的具体属性信息,而且选中单位的属性会在战斗中实时变化。这些变化都要实时呈现在让玩家看到的单位属性信息中。除此之外,在战斗中玩家每时每刻都会恢复能量值,而这也需要实时显示在玩家的能量槽中。那么要如何做到这些呢?
在我的【战斗界面设计(2)】中,已经做好了一个用于显示单位属性的属性窗(P2)。那么今天我们就加快车速,直接来到触发器逻辑的编写。
在服务端,有一个非常好用的、监听玩家数值属性变化的触发事件。创建好相应自定义事件,在这个触发器动作中直接发送事件即可(P3)
另创建一个单位属性变化的自定义事件,和刚刚事件不同的是这个事件要传入属性变化的单位。然后新建一个和刚刚触发事件相同的触发器,逻辑是只要有选中的单位且单位存在,那么就给该单位的所属玩家发送单位属性变化的事件(P4)
来到客户端,既然要为玩家呈现单位属性的各个信息,首先要在局部变量中取到单位属性窗口及其下属的各个控件。根据该单位和玩家敌友关系的不同,属性框采用不同颜色的背景(P5)
接下来就是为属性框中的显示值一一赋值。要注意的地方是攻击速度的显示可能有多位小数点,这里我用先乘后除的运算为其保留2位小数。而对于一些攻击距离很短的单位,则直接显示“近战”(P6)
而当单位属性变化时,客户端会收到服务端发来的事件,需要进行外显属性信息的同步。这里还是像刚刚一样,为各个属性赋值(P7)
玩家拥有的能量值属于玩家属性。既然当前游戏里还没有这个属性,那就直接打开数据编辑器,在“常量配置”中找到“玩家属性类型”并添加创建。这样“能量值”就成为了游戏内的玩家属性之一(P8)
当玩家属性变化时,客户端也会收到我们写好的服务端触发器发来的事件。那么当此事件触发时,就同步更新玩家属性相关的内容——比如刚刚创建的“能量值”。这里我们计算出要显示的能量值和能量恢复速率数值,并将其转化为字符串赋值给要为玩家显示的label控件上。接着,将当前能量值除以能量上限,就得到了要赋值给progress进度条的进度值(P9)
经过以上操作,在战斗界面中玩家的能量值以及玩家选中单位的属性就能实时呈现给玩家了。最后感谢小伙伴的点赞收藏,我们下期见!
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap
TapTap