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.pswp.cn/news/280170.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280170.shtml
英文地址,請注明出處:http://en.pswp.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…