Mono生命周期小实验

今天在写代码的时候,遇到一个初始化顺序问题,于是做了一个实验,下面记录结果:

情景:

  1.在 脚本A中实例化 一个预制体,该预制体挂有脚本B

  2.在 脚本A中,获取实例化物体 身上的 脚本B,并且设置 B中的变量

  问题:脚本B中的变量在哪个阶段被设置成功?

答案:

  注意:实例化出的物体,无论身上的脚本B 是否 enable,都会首先调用 Awake()方法,这个Awake()调用,在A脚本的赋值操作之前。

  实际操作中,在脚本B中,需要在OnEnable()之后,才能获得 A脚本设置的值。

代码:

  脚本B,挂载在预制体上:

 1 public class PlayerControllerTest : MonoBehaviour {
 2     public TestLife life;
 3     bool hasCallUpdate = false;
 4     private void Awake()
 5     {
 6         Debug.Log("执行Awake,  life 设置成功:"+(life!=null).ToString());
 7     }
 8 
 9     private void Start()
10     {
11         Debug.Log("执行Start,   life 设置成功:" + (life != null).ToString());
12     }
13 
14     private void OnEnable()
15     {
16         Debug.Log("执行Enable, life 设置成功:"+(life != null).ToString());
17     }
18 
19     private void Update()
20     {
21         if (!hasCallUpdate)
22         {
23             Debug.Log("执行Update");
24             hasCallUpdate = true;
25         }
26     }
27 }

  脚本A,挂载在主摄像机上: 

 1 public class TestLife : MonoBehaviour {
 2 
 3     PlayerControllerTest test;
 4     private void Awake()
 5     {
 6         var go = Resources.Load("Cube") as GameObject;
 7 
 8         var temp = Instantiate(go);
 9 
10         var sp = temp.GetComponent<PlayerControllerTest>();
11 
12         test = sp;
13 
14         test.life = this;
15       
16     }
17 }

结果:

  

 

转载于:https://www.cnblogs.com/leiGameDesigner/p/9146264.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[读书笔记]大型分布式网站架构设计与实践.分布式缓存

前言&#xff1a;本书是对分布式系统架构涉及到的相关技术的一本科普书籍。由于很难作为开发参考&#xff0c;只能但求了解。所以通篇浅读&#xff0c;对分布式系统进行大致的了解。因为写的非常好&#xff0c;感觉非常有意思&#xff0c;自己也做不出总结。所谓的读书笔记也就…

宁波保哥后院_如何抛出终极后院电影之夜

宁波保哥后院Most people have the basics of throwing a movie night down: you get a movie, you get snacks, you get comfortable, and boom, you’re done. When it comes to throwing a movie party in the backyard, however, things get a little trickier. Read on as…

大厂前端高频面试问题与答案精选

近日&#xff0c;GitHub上一位名为木易杨&#xff08;yygmind&#xff09;的开发者&#xff0c;在 GitHub 中建了一个名为Advanced-Frontend/Daily-Interview-Question项目&#xff0c;该项目每天会更新一道前端大厂面试题&#xff0c;并邀请开发者在issue区中作答&#xff0c;…

Maven打包小技巧--持续更新

NO.1 跳过测试&#xff0c;打包指定环境 mvn clean install -Dmaven.test.skiptrue -P dev 其中&#xff1a;clean将target目录中的文件移除&#xff1b; install根据配置文件&#xff0c;将本地工程打包成jar/war包&#xff1b; -Dmaven.test.skiptrue&#xff0c;打包时路过测…

OpenLayers学习笔记5——使用jQuery UI实现查询并标注(UI篇)

近期事情非常多&#xff0c;老板给的压力也非常大。经常出差&#xff0c;另外项目和个人研究还都要跟上&#xff0c;本月要交论文&#xff0c;还要写专利&#xff0c;仅仅能抽时间来学习其它的东西了。 关于OpenLayers的在博客中不会写太多详细的实现&#xff08;网上有非常多o…

C++ 排序函数 sort(),qsort()的用法

想起来自己天天排序排序&#xff0c;冒泡啊&#xff0c;二分查找啊&#xff0c;结果在STL中就自带了排序函数sort,qsort&#xff0c;总算把自己解脱了~ 所以自己总结了一下&#xff0c;首先看sort函数见下表&#xff1a; 函数名功能描述sort对给定区间所有元素进行排序stable_s…

.net core 实现默认图片

web 上 如果图片不存在 一般是打xx 这时候 一般都是会设置默认的图片 代替 现在用中间件的方式实现统一设置 一次设置 全部作用 .net core 实现默认图片 Startup 文件 app.UseDefaultImage(defaultImagePath: Configuration.GetSection("defaultImagePath").Va…

spring cloud config将配置存储在数据库中

转载请标明出处&#xff1a; https://blog.csdn.net/forezp/...本文出自方志朋的博客 Spring Cloud Config Server最常见是将配置文件放在本地或者远程Git仓库&#xff0c;放在本地是将将所有的配置文件统一写在Config Server工程目录下&#xff0c;如果需要修改配置&#xff0…

VMware虚拟机VMware Authorization Service不能启动问题

出现VMware Authorization Service不能启动问题&#xff0c;注意要在安装VMware Player时使用管理员权限转载于:https://www.cnblogs.com/mingzhang/p/9152873.html

PHP替换回车换行的三种方法

一个小小的换行&#xff0c;其实在不同的平台有着不同的实现&#xff0c;为什么要这样&#xff0c;世界是多样的&#xff01;本来在Unix世界换行用/n来代替换行&#xff0c;Windows为了体现不同&#xff0c;就用/r/n&#xff0c;更有意思的是&#xff0c;Mac中又用了/r。所以&a…

全球的weex资源都在这里

WeeX FAQ QQ: Weex大前端 516682889Weexbox&#xff1a; 943913583WeeX相关资源 weex官方资源 weex官网 Weex Market 已挂 : 一个提供 Weex 第三方组件的网站&#xff0c;您可以在这里找到你需要的 Weex 组件。 Playground : Playground在线&#xff0c;直接在线编写代码并预览…

初步解决博客园代码高亮的一个方案

今天我要推荐的是一个免费而且支持markdown语法的软件——Typora 它有很多优点&#xff0c;支持多种类型代码的高亮风格&#xff0c;方便的排版处理&#xff0c;支持Latex等&#xff0c;最重要的一点是真正做到了所见即所得ヽ(&#xff9f;∀&#xff9f;)&#xff92;(&#x…

git工作原理

工作区&#xff1a;就是你在电脑里能看到的目录。暂存区&#xff1a;英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件&#xff08;.git/index&#xff09;中&#xff0c;所以我们把暂存区有时也叫作索引&#xff08;index&#xff09;。版本库&#xf…

【前端基础进阶】JS-Object 功能详解

Object.assign(target,source1,source2,...)该方法主要用于对象的合并&#xff0c;将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性&#xff0c;不拷贝继承的属性。Object.assign方法实行的是浅拷贝&#xff0c;而不是深拷贝。也就是说&am…

解决“无法从套接字读取更多数据”

重启下Oralce服务即可。转载于:https://www.cnblogs.com/fkeyta/p/9153297.html

网页下载Google Play 的App

网页下载Google Play 的App 文章目录[点击展开](?)[] 前言 当你想在google play上下载某个应用&#xff0c;而无奈手机的系统并没有安装google servicess&#xff0c;此刻是否有些捉急&#xff1f; 本文分享的是一个网站&#xff0c;它可以无需手机而直接通过网页下载Google P…

“硬核”代码重构

在学习编程的路上&#xff0c;相信大家这几个词一定不少听&#xff0c;什么 面相对象、封装继承多态、内功心法21种设计模式 等等 。但是却很少用到&#xff0c;或者说用到的都是被动使用。大牛们在写代码前早就构思好了&#xff0c;接口&#xff0c;基类等等。自己写代码的时候…

上传jar包到nexus私服

进入maven管理页面&#xff0c;登录管理员账号 完成后可以进入对应目录下查看pom依赖 通过maven的方式depoly 在maven的conf/setting.xml 配置nexus私服的管理账号 在servers标签下添加server <server><id>nexus-snapshots</id><username>repouser<…

手把手教你写高质量Android技术博客,画图工具,录像工具,Markdown写法

前言 作为程序员&#xff0c;写博客是一件很有意义的事情&#xff0c;可以加深自己对技术的理解&#xff0c;可以结交更多的朋友&#xff0c;记录自己的技术轨迹&#xff0c;而且分享可以让更多的人从中受益&#xff0c;独乐乐不如众乐乐嘛。 但是要写好博客也不是件容易的事&a…

【Android】RxJava的使用(四)线程控制 —— Scheduler

前言 经过前几篇的介绍&#xff0c;对RxJava对模式有了一定的理解&#xff1a;由Observable发起事件&#xff0c;经过中间的处理后由Observer消费。&#xff08;对RxJava还不了解的可以出门左拐&#xff09;之前的代码中&#xff0c;事件的发起和消费都是在同一个线程中执行&am…