源地址: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; 
    
}

Unity3D中定时器的使用的更多相关文章

  1. Unity3D中的线程与协程

    线程 Unity3D是以生命周期主线程循环进行游戏开发. Unity3D中的子线程无法运行Unity SDK(开发者工具包,软件包.软件框架)跟API(应用程序编程接口,函数库). 限制原因:大多数游 ...

  2. 【Unity3d游戏开发】Unity3D中的3D数学基础---向量

    向量是2D.3D数学研究的标准工具,在3D游戏中向量是基础.因此掌握好向量的一些基本概念以及属性和常用运算方法就显得尤为重要.在本篇博客中,马三就来和大家一起回顾和学习一下Unity3D中那些常用的3 ...

  3. Unity3D中可中途释放的单例

    Unity3D中可中途释放的单例 使用静态类,静态变量的坏处是从程序加载后就一直占用内存,想要释放比较麻烦,可是之前使用的单例,没有提供释放的方法,那是不是也同静态的一样直到程序结束菜释放?那单例的好 ...

  4. 图文详解Unity3D中Material的Tiling和Offset是怎么回事

    图文详解Unity3D中Material的Tiling和Offset是怎么回事 Tiling和Offset概述 Tiling表示UV坐标的缩放倍数,Offset表示UV坐标的起始位置. 这样说当然是隔 ...

  5. unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)

      刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可 ...

  6. Unity3D中Update()与FixedUpdate()的区别

    Unity3D中Update()与FixedUpdate()的区别是什么呢?从字面上理解,它们都是在更新时会被调用,并且会循环的调用.但是Update会在每次渲染新的一帧时,被调用.而FixedUpd ...

  7. Unity3D中C#和js方法相互调用

    通过查找资料,Unity3D中C#和js要相互调用彼此的方法,js文件必须放在"Standard Assets". "Pro Standard Assets" ...

  8. 在unity3d中使用opencv

    1.首先下载opencv2.4.10,解压缩后放在合适的地方,然后根据自己的电脑(32位或64位)选择X86或X64,我的是32位,将“opencv存放路径\build\x86\vc12\bin”加入 ...

  9. Unity3D 中 用quaternion 来对一个坐标点进行旋转的初步体会

    在unity3d中,用四元数来表示旋转,四元数英文名叫quaternion . 比如 transform.rotation 就是一个四元数,其由四个部分组成 Quaternion = (xi + yj ...

随机推荐

  1. Cocos2d-x中使用OpenGL ES2.0编写shader

    这几天在看子龙山人的关于OpenGL的文章,先依葫芦画瓢,能看到些东西,才能慢慢深入了解,当入门文章不错,但是其中遇到的一些问题,折腾了一些时间,为了方便和我一样的小白们,在这篇文章中进行写补充. O ...

  2. mysql基础 事务的认识和使用

    事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务是恢复和并发控制的基本单位. 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序 ...

  3. Qt程序启动画面播放(gif与swf两种动画格式)

    学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找 ...

  4. json和cookie兼容以前的

    'json': function(data) { try { if (typeof data === "string") { if (typeof JSON != 'undefin ...

  5. Html-input文本框只能输入数字

    onKeyPress="if ((event.keyCode < 48 || event.keyCode > 57)) event.returnValue = false;&qu ...

  6. 18.Android之SharedPreferences数据存储学习

    SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来 ...

  7. Windows python3.3下安装BeautifulSoup

    首先在官网下载:http://www.crummy.com/software/BeautifulSoup/#Download BeautifulSoup在版本4以上都开始支持python3了,所以就下 ...

  8. Spring的拦截器

    <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>or ...

  9. hdu1695 莫比乌斯反演

    莫比乌斯反演:可参考论文:<POI XIV Stage.1 <Queries>解题报告By Kwc-Oliver> 求莫比乌斯函数mu[i]:(kuangbin模板) http ...

  10. 微信公众平台开发接口PHP SDK完整版

    <?php /* 方倍工作室 http://www.fangbei.org/ CopyRight 2015 All Rights Reserved */ define("TOKEN&q ...