Unity 脚本中update,fixedupdate,lateupdate等函数的执行顺序
结论
通过一个例子得出的结论是:从先到后被执行的函数是 Awake->Start->FixedUpdate->Update->LateUpdate->OnGUI.
示例
接下来我们用一个例子来看一下。
首先,打开unity,新建一个项目。
然后,在默认的场景中新建三个cube并分别命名cube1、cube2、cube3,在Hierarchy中如下
因为,测试的东西跟位置大小都没关系,所以创建完cube就啥也不用管啦,直接看脚本。
接下来创建一个脚本,OderScript.cs
using UnityEngine;
using System.Collections; public class OderScript : MonoBehaviour { // Use this for initialization
void Start () { Debug.Log(this.name+"'s Start()");
} bool hasUpdate = false;
// Update is called once per frame
void Update () { if (!hasUpdate)
{
Debug.Log(this.name + "'s Update()");
hasUpdate = true;
}
} void Awake()
{
Debug.Log(this.name + "'s Awake()");
} bool hasLateUpdate = false;
void LateUpdate()
{
if (!hasLateUpdate)
{
Debug.Log(this.name + "'s LateUpdate()");
hasLateUpdate = true;
}
} bool hasFixedUpdate = false;
void FixedUpdate()
{
if (!hasFixedUpdate)
{
Debug.Log(this.name + "'s FixedUpdate()");
hasFixedUpdate = true;
} } bool hasOnGUI = false;
void OnGUI()
{
if (!hasOnGUI)
{
Debug.Log(this.name + "'s OnGUI()");
hasOnGUI = true;
} }
}
最后给每个cube添加一个OderSript脚本,点击运行。结果如下:
结论
可以这样理解,每个game object的同名函数会被放到同一个线程中,而这些线程会根据某些规则按顺序执行。
本例中可以认为有N个执行同名函数的线程,这些线程的执行顺序是:Awake线程->Start线程->FixedUpdate线程->Update线程->LateUpdate线程->OnGUI线程.
Unity 脚本中update,fixedupdate,lateupdate等函数的执行顺序的更多相关文章
- jqMobile中pageinit,pagecreate,pageshow等函数的执行顺序
常见的共有5个page函数,刚开始有点迷糊的是到底谁先谁后执行. 实验告诉我们结果: var temp = ''; $('body').live('pagechange', function () { ...
- Tip8:Unity中诸如 Awake() Start() Update()等函数的 执行顺序
Unity脚本中有很多的事件函数,下面是各种函数的执行顺序: 1.reset(); 2.Awake(); 3.OnEnable; 4.OnLevelWasLoaded(); 5.Start(); 6. ...
- Unity3D中Update和Lateupdate的区别
Unity中Update和Lateupdate的区别.Lateupdate和Update每一祯都被执行,但是执行顺序不一样,先执行Updatee然后执行lateUpdate. 如果你有两个脚本JS1. ...
- Unity3D中默认函数的执行顺序
直接用一张图来说明各个默认函数的执行顺序: FixedUpdate以固定的物理时间间隔被调用,不受游戏帧率影响.一个游戏帧可能会调用多次FixedUpdate.比如处理Rigidbody的时候最好用F ...
- unity3D技术之事件函数的执行顺序[转]
unity3D技术之事件函数的执行顺序 转自http://www.yxkfw.com/?p=13703 在unity的脚本,有大量的脚本执行按照预先确定的顺序执行的事件函数.此执行顺序说明如下: ...
- Unity3D事件函数的执行顺序 - 包含渲染等模块的完整版,中英文对照
原文地址: http://www.cnblogs.com/ysdyaoguai/p/3746828.html In Unity scripting, there are a number of eve ...
- Unity3D事件函数的执行顺序
In Unity scripting, there are a number of event functions that get executed in a predetermined order ...
- vue父子组件钩子函数的执行顺序
加载渲染过程 父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount-& ...
- Javascript中页面加载完成后优先执行顺序
Javascript中页面加载完成后优先执行顺序 document优先于windowwindow优先于element //document加载完成执行方法体 document.addEventList ...
随机推荐
- PAT (Advanced Level) 1058. A+B in Hogwarts (20)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- thinkphp 5.0 命名空间
命名空间 命名空间 ThinkPHP5采用命名空间方式定义和自动加载类库文件,有效的解决了多模块和Composer类库之间的命名空间冲突问题,并且实现了更加高效的类库自动加载机制. 如果不清楚命名空间 ...
- zepto的源代码注释(转)
/* Zepto v1.0-1-ga3cab6c - polyfill zepto detect event ajax form fx - zeptojs.com/license */ ;(funct ...
- js中判断输入框是否为空(判断是一串空的字符串)
function ltrim(str) { if(str.length==0) return(str); else { var idx=0; while(str.charAt( ...
- Naive Bayes在mapreduce上的实现
Naive Bayes是比较常用的分类器,因为思想比较简单.之所以说是naive,是因为他假设用于分类的特征在类确定的条件下是条件独立的,这个假设使得分类变得很简单,但会损失一定的精度. 具体推导可以 ...
- [zoj解题] 1203
#include <stdio.h> #include <stdlib.h> #include <math.h> #define MAXN 100 #define ...
- JQuery操作DOM对象
1.追加节点( 儿子关系) append() $("已有元素").append("动态添加元素"); 在已有元素的内部的后面追加一个元素 append ...
- Mysql安装脚本
Mysql PS:要先看懂脚本在复制粘贴运行脚本,每个人的环境不一样 #/bin/bash #--------变量 #num=` + ` now_lujing=`pwd` #------------- ...
- 结对编程--Goldpoint Game
黄金点游戏 黄金点游戏描述: N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值. ...
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介及常用数据库的driverClass和驱动包
[-] DBCP连接池配置 dbcp jar包 c3p0连接池配置 c3p0 jar包 jdbc-pool连接池配置 jdbc-pool jar包 常用数据库的driverClass和jdbcUrl ...