文档章节

关于Awake()和Start()

Magic__wu
 Magic__wu
发布于 2015/07/26 22:46
字数 858
阅读 13
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

1、  Awake函数

       当脚本实例被加载时会调用Awake函数;Awake函数在所有的游戏对象被初始化完毕之后才会被调用;在脚本实例的整个生命周期中,Awake函数仅执行一次。(没有特殊说明,均为在不切换场景的前提下):


      (1)      如果游戏对象(即gameObject)的初始状态为关闭状态,那么运行程序,Awake函数不会执行;反之,如果游戏对象的初始状态为开启状态,那么Awake函数会执行。并且,值得注意的一点是,Awake函数的执行与否与脚本实例的状态(启用或禁用)并没有关系,而是与脚本实例所绑定的游戏对象的状态有关。


      (2)      在不切换场景的前提下,原本处于关闭状态的游戏对象,当它被首次开启时,Awake函数会执行,并且是只在首次开启时才会执行;而已经开启(激活)的游戏对象(Awake函数已经执行过一次),将它关闭后再次开启,Awake函数不会再次执行。看来这是对应了手册中说明的在脚本实例的整个生命周期中仅执行一次的情况。


      (3)      如果重新加载场景,那么场景内Awake函数的执行情况重新遵循上述两点。


2、  Start函数

       还是先看参考手册中对Start函数的一些说明情况:

       当Update函数第一次被调用前会调用Start函数;Start函数只在脚本实例被启用时才会执行;Start函数总是在Awake函数之后执行。在此基础之上,自己的测试总结如下 (没有特殊说明,均为在不切换场景的前提下):


      (1)      如果游戏对象被关闭,那么Start函数不会执行。想一想这是理所当然的,游戏对象关闭了,脚本实例不会被加载,Awake函数不会执行,Start函数不会执行,Update函数等也不会执行。


      (2)      如果游戏对象开启了,对象上绑定的脚本实例被禁用了,那么Start函数不会执行。这是Start函数的特点,只有在脚本实例被启用时它才会执行,这个说明中有提到。注意,这与Awake函数是有区别的。


      (3)      如果游戏对象开启了,对象上绑定的脚本实例也开启了,那么Start函数会执行。并且Start函数只会在脚本实例首次被开启时才会执行。如果是已经开启过的脚本实例被关闭后再次开启,那么Start函数不会再次执行。


      (4)      如果重新加载场景,那么场景内Start函数的执行情况重新遵循上述三点。

       除此之外,还有对Awake函数和Start函数都比较重要的一点,那就是当游戏对象之间存在父子关系时(不论层级的多少)。这时,父游戏对象的状态(开启或关闭)完全决定了子游戏对象上的脚本函数的执行情况。总的来说就是,只有在父游戏对象被开启的状态下,程序才会考虑是否调用子游戏对象上的脚本函数(Awake与Start等)。自上而下,以此类推。

 


© 著作权归作者所有

Magic__wu
粉丝 0
博文 10
码字总数 3489
作品 0
武汉
私信 提问
#Untiy中Instantiate时Awake、OnEnable、Start、Update顺序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwlcsdn000/article/details/88146728 #Untiy中Instantiate时Awake、OnEnable、Start、Update顺序 Unity的生命...

那远远的云端
03/04
0
0
Unity种Awake()和Start()的本质区别

版权声明:本文为燕良原创文章,转载请注明出处:https://neil3d.github.io http://blog.csdn.net/Neil3D/article/details/43865575 昨天被问到一个问题MonoBehaviour的Awake()和Start()的区...

qq_34552886
2018/03/19
0
0
Unity3D_c#脚本注意要点

Inherit from MonoBehaviour 继承自MonoBehaviour All behaviour scripts must inherit from MonoBehaviour (directly or indirectly). This happens automatically in Javascript, but mus......

Matrix4X4
2012/06/26
310
0
Unity3D中常用的几种系统自调用方法的执行顺序及其作用

首先,我们有必要说明一下他们的执行顺序: awake--start--update--fixedupdate--lateupdate--OnGUI--reset--onDisable--onDestory Awake用于在游戏开始之前初始化变量或游戏状态。在脚本整个...

小姚
2014/02/13
1K
0
Unity API学习笔记(1)

首先创建测试项目: 这里我选择了2D,其实都可以,之后可以在项目中修改。 修改方法: 进入正题。 首先看一下官方提供的>手册和>脚本API文档。 创建C#脚本文件并打开: 默认的脚本文件为以下...

BrainK_1400
07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

密码加密与微服务鉴权JWT详细使用教程

[TOC] 1.1、了解微服务状态 微服务集群中的每个服务,对外提供的都是Rest风格的接口,而Rest风格的一个最重要的规范就是:服务的无状态性。 什么是无状态? 1.服务端不保存任何客户端请求者信...

庭前云落
21分钟前
6
0
Xamarin.FormsShell基础教程(9)Shell相关类体系

Xamarin.FormsShell基础教程(9)Shell相关类体系 在Shell中,最为主要的类是Shell类。Shell类实现了大多数应用程序所需的基本UI功能的页面。除此以外,常用的类还有ShellContent、Tab、Fly...

大学霸
23分钟前
4
0
聊聊MVC、MVP、MVVM吧

先来介绍下本文结构: 三种框架的具体概念 在安卓开发上的写法、优缺点 1.概念 1.1 MVC MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模...

二营长的意大利炮手
39分钟前
4
0
如果解释Python,什么是.pyc文件?

我已经了解Python是一种解释型语言......但是,当我查看我的Python源代码时,我看到.pyc文件,Windows将其识别为“编译的Python文件”。 这些来自哪里? #1楼 Python代码经历了两个阶段。 第...

javail
45分钟前
4
0
.NET Core初览

初览的应用场景为游戏服务器开发。所以测试在侧重点上更强于IO和密集型计算 TODO

梦想游戏人
47分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部