在游戏制作中,我们需要用到类似于在一定时间后执行某一段代码的方法来实现一些效果,其逻辑等同于如现实世界中的“红绿灯”。
在Untiy当中,存在两种常用的代码去实现这一功能。
方法一:计数器累加
先定义好一个用于计数的变量_currenTimeCnt = 0;
再一定一个用于比较的变量_waitTime =1.0f;
通过Update()方法,用if..else循环比较两个变量,从而通过时间来控制方法的实现,如下方简易代码所示:
private float _waitTime =1.0f;
private float _currenTimeCnt = 0;
...
void Update(){
<span style="white-space: pre;"> </span>if(_currenTimeCnt > _waitTime){
<span style="white-space: pre;"> </span><span style="color:#ff0000;"><strong>Main();</strong></span>
<span style="white-space: pre;"> </span> _currenTimeCnt = 0;
<span style="white-space: pre;"> </span>}
<span style="white-space: pre;"> </span>_currenTimeCnt +=Time.deltaTime;
}
InvokeRepeating的基类是MonoBehaviour。
function InvokeRepeating (methodName : string, time : float, repeatRate : float) : void
该方法需要传入的参数有三个,methodName:方法的名称,string类型;time:等待的时间;repeatRate:刷新时间,也就是两次执行方法的间隔。
根据实际需求,我们可以在Awake()方法 或 State()方法中调用该方法。