首先,必须了解,游戏引擎(例如Unity)在“基于框架”的范例上工作。
在每一帧中执行代码。
其中包括Unity自己的代码以及您的代码。
在考虑框架时,一定要了解,绝对不能保证框架何时发生。他们不会定期跳动。帧之间的间隙可以是例如0.02632,然后是0.021167,然后是0.029778,依此类推。在该示例中,它们全都是“大约” 1/50秒,但它们都是不同的。而且在任何时候,您可能需要花费更长或更短的时间才能获得帧。并且您的代码可以在框架内的任何时间执行。
牢记这一点,您可能会问:如何在Unity中的代码中访问这些框架?
很简单,您可以使用Update()呼叫,也可以使用协程。(实际上,它们是完全相同的东西:它们允许代码在每个帧中运行。)
协程的目的是:
您可以运行一些代码,然后“停止并等待”直到以后的某个帧。
您可以等待到下一帧,可以等待许多帧,或者可以等待未来几秒钟的大约时间。
例如,您可以等待“大约一秒钟”,这意味着它将等待大约一秒钟,然后从现在开始大约一秒钟将您的代码放在某个帧中。(实际上,在该html" target="_blank">框架内,代码可以在任何时间运行。)要重复:它不会精确到一秒钟。准确的计时在游戏引擎中毫无意义。
在协程内部:
要等待一帧:
// 做点什么 yield return null; // 等到下一帧 // 做点什么
等待三帧:
// 做点什么 yield return null; // 等到从现在开始三帧 yield return null; yield return null; // 做点什么
等待大约半秒钟:
// 做点什么 yield return new WaitForSeconds (0.5f); // 等待约0.5秒钟的画面 // 做点什么
每帧都要做一些事情:
while (true) { // 做点什么 yield return null; // 等到下一帧 }
该示例实际上与将某些内容简单地放入Unity的“ Update”调用中完全相同:“执行某项操作”中的代码每帧运行一次。
将股票代码附加到GameObject。当该游戏对象处于活动状态时,刻度线将运行。请注意,当游戏对象变为非活动状态时,脚本会仔细停止协程。这通常是正确设计协程用法的重要方面。
using UnityEngine; using System.Collections; public class Ticker:MonoBehaviour { void OnEnable() { StartCoroutine(TickEverySecond()); } void OnDisable() { StopAllCoroutines(); } IEnumerator TickEverySecond() { var wait = new WaitForSeconds(1f); // 谨记:它仅是近似的 while(true) { Debug.Log("Tick"); yield return wait; // 等待一帧,大约从现在开始1秒钟 } } }
本文向大家介绍unity3d 结束协程,包括了unity3d 结束协程的使用技巧和注意事项,需要的朋友参考一下 示例 通常,您将协程设计为在达到某些目标时自然终止。 要从协程“内部”阻止协程,您不能像在普通功能中早退一样简单地“返回”。而是使用yield break。 您还可以强制脚本启动的所有协程在完成之前停止。 从调用方停止特定协程的方法因启动方式而异。 如果您通过字符串名称启动了协程: 那么
本文向大家介绍unity3d 可以作为协程的MonoBehaviour方法,包括了unity3d 可以作为协程的MonoBehaviour方法的使用技巧和注意事项,需要的朋友参考一下 示例 可以将三种MonoBehaviour方法制成协程。 Start() OnBecameVisible() OnLevelWasLoaded() 例如,这可用于创建仅在摄像机可见对象时执行的脚本。
Unity3D 是一个跨平台的浏览器/移动游戏软件框架。 Unity3D引擎采用了和大型、专业的游戏开发引擎相同的架构方式和开发方式实现Web3D,对于Web3D行业来说,是一次大的飞跃,游戏是VR行业 的最高端,呵呵,但是现在都已经平民化了,甚至过春节在山区也能碰见搞VR的老乡,因为会用3Dmax或者VRP也算VR了,呵呵,但是Unity3D的 出现和大量应用将把Web3D拉到Game的快车道上
本文向大家介绍unity3d 介绍,包括了unity3d 介绍的使用技巧和注意事项,需要的朋友参考一下 示例 预制件是一种资产类型,可以存储完整的GameObject及其组件,属性,附加组件和序列化的属性值。在许多情况下这很有用,包括: 在场景中复制对象 在多个场景中共享一个公共对象 能够一次修改预制件并将更改应用于多个对象/场景 创建具有轻微修改的重复对象,同时可以从一个基础预制件中编辑公共元素
本文向大家介绍unity3d Custom Property Drawer,包括了unity3d Custom Property Drawer的使用技巧和注意事项,需要的朋友参考一下 示例 有时,您有包含数据但不从MonoBehaviour派生的自定义对象。除非您为对象类型编写自己的自定义属性抽屉,否则将这些对象添加为MonoBehaviour类中的字段不会产生视觉效果。 下面是添加到MonoBe
本文向大家介绍unity3d Parenting 与 Children ,包括了unity3d Parenting 与 Children 的使用技巧和注意事项,需要的朋友参考一下 示例 Unity使用层次结构来使您的项目井井有条。您可以使用编辑器在层次结构中为对象分配位置,但是也可以通过代码来实现。 为人父母 您可以使用以下方法设置对象的父对象 每当您设置变换父对象时,它都会将对象位置保留为世界位