Awake()和Start()之迷二
来源:互联网 发布:统计学:从数据到结论 编辑:程序博客网 时间:2024/06/06 03:03
一定义:(来自u3d圣典)
Awake()
当一个脚本实例被载入时Awake被调用。
Awake用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如 GameObject.FindWithTag 这样的函数搜索它们。每个游戏物体上的Awke以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息。Awake总是在Start之前被调用。它不能用来执行协同程序。
Start()
Start仅在Update函数第一次被调用前调用。
Start在behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码。Awake总是在Start之前执行。这允许你协调初始化顺序。
二、测试在编辑场景中的对象的脚本中的变量,被赋值的顺序
1、首先它值来处于,它被定义时所给的初始值。(变成1)
2、接着的它的值,来自编辑器中的检视面板的设定。(变成2)
3、然后,就到了Awake()了。(变成10)
4、最后才是Start().(变成20)
三、测试在代码中的对象实例化一个对象。这个对象的脚本中的变量,的被赋值的顺序。
如下面的下面的两年脚本monster.cs,和test.cs
using UnityEngine;using System.Collections;public class monster : MonoBehaviour {// Use this for initializationvoid Awake(){hp = 100;}void Start () {hp = 200;}// Update is called once per framevoid Update (){}public int hp = 10;}monster,cs这个脚本附给一个怪物预设。
using UnityEngine;using System.Collections;public class test : MonoBehaviour {// Update is called once per framevoid Update () {if(Input.GetKeyDown(KeyCode.Space)){GameObject monsterObj = Instantiate(prefabMonster) as GameObject;monster monsterComp = monsterObj.GetComponent<monster>();monsterComp.hp = 500;}}#region 变量区public GameObject prefabMonster;#endregion}test.cs用来控制怪物的构造。
经i测试跟踪,monsterComp.hp的数值被赋值的顺序是:
1 ====>
------------------------------------------------------------------------------------------------------------------------------------------------
2 =======>
注: Instantiate(prefabMonster)这名的内部就会调用Awake
-----------------------------------------------------------------------------------------------------------------------------------------------
3 ==========>
-----------------------------------------------------------------------------------------------------------------------------------------------
4
-------------------------------------------------------------------------------------------------------------------------------------------------------
最后的结果为200.
到这里你应该知道Awak 、Start、及相关地方的执行顺序了。使用要慎啊。
- Awake()和Start()之迷二
- Awake()和Start()之迷一
- Unity3D技术之Awake和Start有什么区别
- awake和start的区别
- Awake() 和Start()的区别
- unity3d Awake和 Start 区别
- Unity3d中 Awake 和 Start
- Awake Start
- 脚本中Start()和Awake()的区别
- U3D Awake 和 Start 函数调用顺序
- Unity3d中 Awake 和 Start的区别
- Unity中Awake和Start的区别
- Awake函数和Start函数的区别
- 再议Unity3D中的Awake(),OnEnable()和Start()
- Unity中Awake和Start的区别
- UnityScript Awake()和Start()的小区别
- OnEnable, Awake, Start order
- OnEnable, Awake, Start order
- socket 缓冲区大小设置
- 宏定义中的#,##操作符和... and _ _VA_ARGS_ _
- php学习笔记(十)文件的上传与下载
- Spring3.0新特性 - REST架构的支持
- insmod 加载模块的过程
- Awake()和Start()之迷二
- Servlet Filter(过滤器) 二
- Applying themes and styles(3)_Applying themes and styles
- 将你的Android编译打包签名自动化
- php学习笔记(十一)文件上传类的编写
- Java回调函数的理解
- NSString 常用方法总结
- WinCE 入门全过程
- android 游戏开发之物理小球的应用