unity协程

unity的yield

元气小坏坏 提交于 2019-11-29 00:23:14
这里说的是Unity通过StartCoroutine开启IEnumerator协程里的yield相关 1.yield return 0,yield return null 等待下一帧接着执行下面的内容 2.yield return new WaitForSeconds(float secs) 等待指定秒数,接着执行下面的内容 3.yield return www; 使用www下载,等待下载完成后再执行下面代码 4.yield return StartCoroutine("协程方法名") 先执行协程方法,并等待,直到该协程方法执行完再执行后面的内容 5.yield break 退出协程,不执行break后面的代码 6.yield return resourcesRequest; 异步取到文件后执行后面的代码 来源: https://www.cnblogs.com/mcyushao/p/11434997.html

Unity生命周期的自我理解

北战南征 提交于 2019-11-28 07:59:28
首先是ReSet相比于其他函数较特殊 只在编辑模式下调用且只调用一次 在用户点Inspector面板下的Reset按钮时或第一次添加组件时调用 Awake 该函数中进行游戏对象的初始化 例如GameObject.FInd GameObject.FindWithTag Awake函数游戏运行之后第一个执行且执行一次 生命周期执行完一次后直接跳到OnEnable 不走Awake 如果要程序运行之后要禁用脚本 在Awake脚本中写this.enable=false 只执行到Enable函数 不进行以下生命周期函数的执行 Enable 该函数中判断当前脚本状态是否可继续执行 如果enable=true继续执行 enable=false不可执行 但可以在其他脚本将enable=true继续往下执行 Start 该函数在生命周期中也是只执行一次 其中可以由自己调整初始化代码顺序 假如Enable为false时在别的脚本中设置为true 也就是说该脚本可以继续执行了 生命周期要重新到Enable函数 走到Start时要判断Start函数是否执行过 执行过就不再执行 比如初始化主角位置为0 生命周期执行完一次之后主角位置改变了 则不能再次进入Start函数将主角位置初始化 FixedUpdate 固定帧更新 常常做一些物理行为的方法 比如刚体加力 发子弹时 就将作用力用在该函数的固定帧中

unity中的简单延时方法

大憨熊 提交于 2019-11-27 00:54:07
unity中的简单延时方法 在 unity 中我们经常会需要考虑一件事,如何让一个物体或者功能在特定的条件下出现,这时我们就可以考虑应用延时的方式来解决,我们可以通过设定不同的时间点,让物体干不同的事情,从而达到想要的效果。下面需要讲的的是两种比较常见的延时方法,一个是 unity 自带的 Invoke 和 InvokeRepeating,还有一个是协程。 一、场景的搭建 首先我们先搭建一个简单的场景,为了达到直观的效果,我们先创建两个Cube,一个Cube用来验证Invoke和InvokeRepeating的方法,另一个用来验证协程。我们可以通过不同时间段改变Cube的材质来体现延时的效果。比如让Cube从初始的白色通过不同时间段,由白变红,再由红变黄,最后再变绿,通过改变颜色变换时需要的时间来达到延时效果。 二、功能实现 我们在其中一个Cube中添加一个自定义脚本delayedOne。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class delayedOne : MonoBehaviour { public MeshRenderer skin; //定义一个网格渲染器 void Start () { skin = this.transform