博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D中定时器的使用
阅读量:6680 次
发布时间:2019-06-25

本文共 2250 字,大约阅读时间需要 7 分钟。

源地址:http://unity3d.9tech.cn/news/2014/0402/40149.html

在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBehavior中一个人人皆知的定时器方法,每帧都在调用,那还有其他什么定时器的方法呢,这里介绍一下。

1.Invoke(string methodName,float time)

在一定时间调用methodName函数

1
2
3
4
5
6
7
8
9
10
11
12
13
using UnityEngine; 
using System.Collections; 
   
public class example : MonoBehaviour { 
    
public Rigidbody projectile; 
    
void LaunchProjectile() { 
        
Rigidbody instance = Instantiate(projectile); 
        
instance.velocity = Random.insideUnitSphere * 5; 
    
    
public void Awake() { 
        
Invoke(
"LaunchProjectile"
, 2); 
    
}

2.InvokeRepeating(string methodName,float time,float repeatRate)

每隔一定时间调用一次methodName函数

Invokes the method methodName in time seconds.

在time秒调用methodName方法;简单说,根据时间调用指定方法名的方法

After the first invocation repeats calling that function every repeatRate seconds.

从第一次调用开始,每隔repeatRate时间调用一次.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
using UnityEngine; 
using System.Collections; 
   
public class example : MonoBehaviour { 
    
public Rigidbody projectile; 
    
void LaunchProjectile() { 
        
Rigidbody instance = Instantiate(projectile); 
        
instance.velocity = Random.insideUnitSphere * 5; 
    
    
public void Awake() { 
        
InvokeRepeating(
"LaunchProjectile"
, 2, 0.3F); 
//2秒后,没0.3f调用一次 
    
}

3.CancelInvoke(string methodName)

取消这个脚本中所有的调用

Cancels all Invoke calls on this MonoBehaviour.

取消这个MonoBehaviour上的所有调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class example : MonoBehaviour { 
    
public Rigidbody projectile; 
    
void Update() { 
        
if
(Input.GetButton(
"Fire1"
)) 
            
CancelInvoke(); 
   
    
    
void LaunchProjectile() { 
        
instance = Instantiate(projectile); 
        
instance.velocity = Random.insideUnitSphere * 5; 
    
    
public void Awake() { 
        
InvokeRepeating(
"LaunchProjectile"
, 2, 0.3F); 
    
   
function
LaunchProjectile () { 
    
instance = Instantiate(projectile); 
    
instance.velocity = Random.insideUnitSphere * 5; 
}

4.(bool) IsInvoking(string methodName)

某指定函数是否在等候调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using UnityEngine; 
using System.Collections; 
   
public class example : MonoBehaviour { 
    
public Rigidbody projectile; 
    
void Update() { 
        
if
(Input.GetKeyDown(KeyCode.Space) && !IsInvoking(
"LaunchProjectile"
)) 
//如果这个方法不在调用并且等待了2秒 
            
Invoke(
"LaunchProjectile"
, 2); 
   
    
    
void LaunchProjectile() { 
        
Rigidbody instance = Instantiate(projectile); 
        
instance.velocity = Random.insideUnitSphere * 5; 
    
}

 

转载地址:http://jsyao.baihongyu.com/

你可能感兴趣的文章
数据库 Proc编程二
查看>>
zabbix-agent 自动注册
查看>>
java.lang.AbstractStringBuilder.enlargeBuffer
查看>>
HTML5新增与结构有关的元素
查看>>
C# 复制和克隆认识浅谈
查看>>
Python和Flask真强大:不能错过的15篇技术热文(转载)
查看>>
【LeetCode】Swap Nodes in Pairs 链表指针的应用
查看>>
Swift,Objective-C语言性能对照測试
查看>>
[Node] Using dotenv to config env variables
查看>>
Easyui的numberbox无法输入以0开头的数字编号(转载)
查看>>
网页截图工具CutyCapt
查看>>
Android Jni Android.mk经常使用语句
查看>>
《影响力》6个使人顺从的武器之一互惠原理深入剖析
查看>>
Guava学习之Preconditions
查看>>
移动电力猫HG260GT pon实现路由拨号
查看>>
linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体[转]...
查看>>
关于inodes占用100%的问题及解决方法
查看>>
nvidia驱动安装
查看>>
XHTML 教程(摘录自 W3C School)
查看>>
Directx11教程(50) 输出depth/stencil buffer的内容
查看>>