Unity 脚本中update,fixedupdate,lateupdate等函数的执行顺序

本文通过Unity环境下的脚本实例,详细解析了Unity中不同生命周期函数的执行顺序,包括Awake、Start、FixedUpdate、Update、LateUpdate和OnGUI,展示了这些函数在游戏对象中的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

结论

通过一个例子得出的结论是:从先到后被执行的函数是 Awake->Start->FixedUpdate->Update->LateUpdate->OnGUI.

 

示例


接下来我们用一个例子来看一下。

 

首先,打开unity,新建一个项目。

 

然后,在默认的场景中新建三个cube并分别命名cube1、cube2、cube3,在Hierarchy中如下

 

因为,测试的东西跟位置大小都没关系,所以创建完cube就啥也不用管啦,直接看脚本。

接下来创建一个脚本,OderScript.cs

 

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class OderScript : MonoBehaviour {
 5 
 6     // Use this for initialization
 7     void Start () {
 8 
 9         Debug.Log(this.name+"'s Start()");
10     }
11 
12     bool hasUpdate = false;
13     // Update is called once per frame
14     void Update () {
15 
16         if (!hasUpdate)
17         {
18             Debug.Log(this.name + "'s Update()");
19             hasUpdate = true;
20         }
21     }
22 
23     void Awake()
24     {
25         Debug.Log(this.name + "'s Awake()");
26     }
27 
28     bool hasLateUpdate = false;
29     void LateUpdate()
30     {
31         if (!hasLateUpdate)
32         {
33             Debug.Log(this.name + "'s LateUpdate()");
34             hasLateUpdate = true;
35         }
36     }
37 
38     bool hasFixedUpdate = false;
39     void FixedUpdate()
40     {
41         if (!hasFixedUpdate)
42         {
43             Debug.Log(this.name + "'s FixedUpdate()");
44             hasFixedUpdate = true;
45         }
46             
47     }
48 
49     bool hasOnGUI = false;
50     void OnGUI()
51     {
52         if (!hasOnGUI)
53         {
54             Debug.Log(this.name + "'s OnGUI()");
55             hasOnGUI = true;
56         }
57            
58     }
59 }

 

最后给每个cube添加一个OderSript脚本,点击运行。结果如下:

 

结论

可以这样理解,每个game object的同名函数会被放到同一个线程中,而这些线程会根据某些规则按顺序执行。

本例中可以认为有N个执行同名函数的线程,这些线程的执行顺序是:Awake线程->Start线程->FixedUpdate线程->Update线程->LateUpdate线程->OnGUI线程.

转载于:https://www.cnblogs.com/fly-100/p/3777731.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值