【星火进阶教程03-代码锁】如何构造代码锁来提高代码的安全性,十分实用
一、前言
我们在设计游戏的时候,可能会发现一个问题,就是当玩家快速点击按钮或者由于客户端某种其他未知原因,结果服务器重复处理了事件的逻辑,导致程序未按照我们想要的流程走,或者出现了其他可能问题,这里给大家提供一个十分方便的【代码锁】功能,可以有以下优点:
1、封装完善的代码锁可能十分方便的实现开锁、解锁功能
2、所有锁可以层级套用
3、客户端与服务器都可以使用(服务器锁最为安全)
4、去掉了导致程序不稳定和分散的IF方法的使用
二、创建锁的“三件套”
在服务器触发器的常用库中,创建一个锁的预设值,一个锁组全局变量和一个代码锁的全局函数。俗称三件套
其中,当我们需要在不同的地方进行开锁和闭锁时,我们只需要从锁的预设值中,”购买“一把锁就行了,预设值可以确保锁的一一对应,而不会出现人为引起的代码错误。
三、开锁和闭锁
闭锁:
这时候,我们在任意服务器代码中,如果需要某段代码进行闭锁,就直接使用下面的方式,将代码块放入闭锁区域,同时选好自己的锁,勾上false。这时候,锁里面的代码就永远不会执行第二次了,直到我们开锁。
下面就是:当玩家点击开始战斗之后,我们就闭锁,不管玩家是多次点击还是因为其他原因,我们都不希望战斗逻辑会重复执行。
开锁:
接下来,我们可以在服务器的其他任意代码中,进行开锁操作,比如我们在结束战斗时,进行开锁,这样玩家上面被锁住的代码,就被打开了,能够进行下次的战斗逻辑。
四、总结
1、锁一一对应,一把锁开一扇门
2、客户端的锁和服务器逻辑一模一样,但是客户端锁可以被黑客进行伪造和篡改,并不能确保安全,只能够做到防止浪费UI资源