Unity3d 协程、调用函数、委托
(一)协程
开启方法:StartCoroutine("函数名");
结束方法StopCoroutine("函数名"),StopAllCoroutines();
IEnumerator TestIEnumerator()
{
Debug.Log("协程");
//等待游戏界面绘制完成
yield return new WaitForEndOfFrame();
Debug.Log("游戏界面绘制完成");
//等待1秒后
yield return new WaitForSeconds(1F);
Debug.Log("1秒后");
//等待0.5秒后
yield return new WaitForSeconds(0.5F);
Debug.Log("0.5秒后");
while(true)
{
//等待固定更新
yield return new WaitForFixedUpdate();
Debug.Log("固定更新");
}
}
// Use this for initialization
void Start () {
StartCoroutine("TestIEnumerator");
}
(二)调用函数
开启方法
不重复调用
Invoke("函数名",“延迟时间”); 重复调用 InvokeRepeating("函数名",“延迟时间”,“重复间隔时间”);
结束方法
CancelInvoke("函数名"),CancelInvoke();
是否在有在调用的函数
IsInvoking(); 指定函数是否在调用 IsInvoking("函数名");
void TestInvokeRepeating()
{
Debug.Log("重复调用");
m_round++;
if (m_round > 15)
{
//结束所有调用
//CancelInvoke();
//结束指定调用
CancelInvoke("TestInvokeRepeating");
} if (IsInvoking("TestInvokeRepeating"))
{
Debug.Log("调用中");
}
else
{
Debug.Log("不在调用中");
}
}
void TestInvokeRepeating2()
{
Debug.Log("重复调用TestInvokeRepeating2"); }
// Use this for initialization
void Start () {
m_round = 0;
InvokeRepeating("TestInvokeRepeating",0f,1f);
InvokeRepeating("TestInvokeRepeating2", 0f, 1f);
}
(二)委托
public class GameManager : MonoBehaviour
{
//定义一个委托
delegate int TestEntrust(int a); public int ReceiveLogic(int a)
{
Debug.Log("参数a="+a);
return 0;
}
// Use this for initialization
void Start () {
//创建委托对象
TestEntrust rl = new TestEntrust(ReceiveLogic);
//调用
rl(3);
}
}
Unity3d 协程、调用函数、委托的更多相关文章
- Unity3D 协程 Coroutine
协程(Coroutine)的概念存在于很多编程语言,例如Lua.ruby等.而由于Unity3D是单线程的,因此它同样实现了协程机制来实现一些类似于多线程的功能,但是要明确一点协程不是进程或线程,其执 ...
- Unity3D协程yield的理解
Unity3D的协程概括地将就是:对于一段程序,你可以加上yield标明哪里需要暂停,然后在下一帧或者一段时间后,系统会继续执行这段代码.协程的作用:①延迟一段时间执行代码.②等某个操作完成之后再执行 ...
- 二、深入asyncio协程(任务对象,协程调用原理,协程并发)
由于才开始写博客,之前都是写笔记自己看,所以可能会存在表述不清,过于啰嗦等各种各样的问题,有什么疑问或者批评欢迎在评论区留言. 如果你初次接触协程,请先阅读上一篇文章初识asyncio协程对asy ...
- Unity3D 协程 浅谈
协程 理解:协程不是线程,也不是异步执行(知道就行). 1.协程和MonoBehaviour的Update函数一样,也是在MainThread中执行的(一定得明白这句话意思). void Start ...
- Unity3d 协程
参考文章: http://blog.csdn.net/onafioo/article/details/48979939 http://www.cnblogs.com/zhaoqingqing/p/37 ...
- [转]Unity3D协程介绍 以及 使用
作者ChevyRay ,2013年9月28日,snaker7译 原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协 ...
- Unity3d 协程的注意问题(新手须注意,老手须加勉)
关于unity3d的协程,非常的好用,比如等待几秒执行,等待下一帧执行等! 但是也有潜在的问题: 1.协程是单线程的,在主线程中完成 2.如果发现yield, 那么这一帧会结束,那么等下一帧调用此脚本 ...
- Unity3D协程
协程介绍 Unity的协程系统是基于C#的一个简单而强大的接口 ,IEnumerator,它允许你为自己的集合类型编写枚举器.这一点你不必关注太多,我们直接进入一个简单的例子来看看协程到底能干什么.首 ...
- Unity3D协程介绍 以及 使用
作者ChevyRay ,2013年9月28日,snaker7译 原文地址:http://unitypatterns.com/introduction-to-coroutines/ 在Unity中,协 ...
随机推荐
- x264命令参数与代码中变量的对应关系
帧类型选项: -I/--keyint i_keyint_max 最大IDR帧间距,默认为250 -i/--min-keyint i_keyint_min 最小IDR帧间距,默认为25 --sce ...
- 关于Eclipse中校验输入文件名的源代码
Eclipse中测试文件名的方法. 也没有单独的分操作系统.在Talend时解决一个在文本框中输入名字有Bug的一个问题,这个是Eclipse中解决输入名字,对名字校验的部分源码. public IS ...
- Netty学习链接
Netty实战精髓请参见:https://waylau.gitbooks.io/essential-netty-in-action/content/GETTING%20STARTED/Introduc ...
- hdu 4340 树状DP
思路:我们定义两个数组,ant[Maxn][2],bob[Maxn][2].ant[i][0]表示还未确定哪个城市被全费用占领,ant[i][1]表示确定了哪个城市被全费用占领.那么ant[i][0] ...
- Leetcode 338. Counting Bits
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the ...
- Mac环境下svn的使用(转载)
在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...
- Linux - 硬链接与软链接
在 Linux 的文件系统中,磁盘块分成了 3 个部分.一部分称为数据区,用来存放文件内容.另一部分称为 inode 表,用来存放文件属性.第三部分称为超级块,用来存放文件系统本身的属性.文件的内容和 ...
- 打包并发布自己的Android应用(eclipse)
第一步,在Eclipse中选择需要打包的项目,然后右键--选择Export,会弹出一个打包的提示框,如下图所示. 按Next之后,会继续出现一个提示框,这里你可以选择自己需要打包的项目(默认是刚才选中 ...
- From MSI to WiX, Part 8 - Major Upgrade, by Alex Shevchuk
Following content is reprinted from here, please go to the original website for more information. Au ...
- 【转】JavaScript中undefined与null的区别
通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...