Unity3D技术之Awake和Start有什么区别

        第一次接触unity,不理解这两个函数到底有何区别,以下是官方文档的解释:

       Awake[size=0.875em]() Awake is called when the script instance is being loaded.

       

       [size=0.875em]Start() Start is called on the frame when a script is enabled just before any of the Update methods is called the first time.

 

        Awake()是用来初始化游戏中的变量的,相当于构造器的功能,Awake不能够使用协同。

Start()函数是在任意Update方法被调用之前第一个调用的。


       1.Awake在物体初始化的时候就会被调用,不管脚本本身是否启用,Start方法只有在被激活的状态下才会被调用,举个例子,新建代码TestAs,双击脚本进行编辑,文章出处【狗刨学习网】代码如下:

 

        [C#] [color=rgb(51, 102, 153) !important]纯文本查看 [color=rgb(51, 102, 153) !important]复制代码

 

       [color=white !important][backcolor=rgb(108, 226, 108) !important][color=white !important]?

 

      using UnityEngine;

 

       using System.Collections;

  

       public class TestAs : MonoBehaviour {

 

       void Awake({

 

       Debug.Log("Awake函数被调用");

 

}

  

       // Use this for initialization

 

       void Start () {

 

       Debug.Log("Start函数被调用"); 

 

}

 

       // Update is called once per frame

 

       void Update () {

 

}

 

}

 

       using UnityEngine;

       using System.Collections;

       public class TestAs : MonoBehaviour {

 

       void Awake()

 

{
 

       Debug.Log("Awake函数被调用"); 

}
   

       // Use this for initialization

       void Start () {

       Debug.Log("Start函数被调用"); 

}

       // Update is called once per frame

       void Update () {

}

}

        2.将脚本拖拽到场景中的相机上,运行,在Console下会出现以下输出,如图1-1所示:


1-1

 

        3.TestAs脚本设置为非启用状态,如图所示,TestAs的脚本上的对钩已被去掉(红线所示),如图1-2所示:


1-2

       4.点击启用则Console则只输出来"Awake函数被调用"(Console前两个输出的语句是第一次运行时的输出结果),如图1-3所示:


1-3

       因此如果有这样的情况,对象A的初始化依赖于对象B的初始化,则对象B可以在Akake函数里进行初始化,这样可以防止空指针异常的出现。

或者在Awake中判断是否将某脚本启用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值