1. 程式人生 > >基本函式生命週期和執行規律

基本函式生命週期和執行規律

轉載自:http://www.cnblogs.com/SunboyL/p/Unity_CallSequence.html


官方參考手冊:http://docs.unity3d.com/Manual/ExecutionOrder.html



unity指令碼從喚醒到銷燬都有著一套比較完善的生命週期,新增任何指令碼都要遵守生命週期法則!


  接下來介紹幾種系統自呼叫的重要方法。首先要我們先來說明一下它們的執行順序:


  Awake --> Start --> Update --> FixedUpdate --> LateUpdate -->OnGUI -->Reset --> OnDisable -->OnDestroy


  下面我們針對每一個方法進行詳細的說明:


  1.Awake:用於在遊戲開始之前初始化變數或遊戲狀態。在指令碼整個生命週期內它僅被呼叫一次.Awake在所有物件被初始化之後呼叫,所以你可以安全的與其他物件對話或用諸如GameObject.FindWithTag()這樣的函式搜尋它們。每個遊戲物體上的Awake以隨機的順序被呼叫。因此,你應該用Awake來設定指令碼間的引用,並用Start來傳遞資訊Awake總是在Start之前被呼叫。它不能用來執行協同程式。


  2.Start:僅在Update函式第一次被呼叫前呼叫。Start在behaviour的生命週期中只被呼叫一次。它和Awake的不同是Start只在指令碼例項被啟用時呼叫。你可以按需調整延遲初始化程式碼。Awake總是在Start之前執行。這允許你協調初始化順序。在所有指令碼例項中,Start函式總是在Awake函式之後呼叫。


  3.Update:正常幀更新,用於更新邏輯。每一幀都執行,處理Rigidbody時,需要用FixedUpdate代替Update。例如:給剛體加一個作用力時,你必須應用作用力在FixedUpdate裡的固定幀,而不是Update中的幀。(兩者幀長不同)FixedUpdate,每固定幀繪製時執行一次,和update不同的是FixedUpdate是渲染幀執行,如果你的渲染效率低下的時候FixedUpdate呼叫次數就會跟著下降。FixedUpdate比較適用於物理引擎的計算,因為是跟每幀渲染有關。Update就比較適合做控制。


  4.FixedUpdate:固定幀更新,在Unity導航選單欄中,點選“Edit”-->“Project Setting”-->“Time”選單項後,右側的Inspector檢視將彈出時間管理器,其中“Fixed Timestep”選項用於設定FixedUpdate()的更新頻率,更新頻率預設為0.02s。


  5.LateUpdate:在所有Update函式呼叫後被呼叫,和fixedupdate一樣都是每一幀都被呼叫執行,這可用於調整指令碼執行順序。例如:當物體在Update裡移動時,跟隨物體的相機可以在LateUpdate裡實現。LateUpdate,在每幀Update執行完畢呼叫,他是在所有update結束後才呼叫,比較適合用於命令指令碼的執行。官網上例子是攝像機的跟隨,都是在所有update操作完才跟進攝像機,不然就有可能出現攝像機已經推進了,但是視角里還未有角色的空幀出現。


  6.OnGUI:在渲染和處理GUI事件時呼叫。比如:你畫一個button或label時常常用到它。這意味著OnGUI也是每幀執行一次。


  7.Reset:在使用者點選檢視面板的Reset按鈕或者首次新增該元件時被呼叫。此函式只在編輯模式下被呼叫。Reset最常用於在檢視面板中給定一個預設值。


  8.OnDisable:當物體被銷燬時 OnDisable將被呼叫,並且可用於任意清理程式碼。指令碼被解除安裝時,OnDisable將被呼叫,OnEnable在指令碼被載入後呼叫。注意: OnDisable不能用於協同程式。


  9.OnDestroy:當MonoBehaviour將被銷燬時,這個函式被呼叫。OnDestroy只會在預先已經被啟用的遊戲物體上被呼叫。注意:OnDestroy也不能用於協同程式。


  備註:


  協同程式,即在主程式執行時同時開啟另一段邏輯處理,來協同當前程式的執行。換句話說,開啟協同程式就是開啟一個執行緒。在unity3d中,使用MonoBehaviour.StartCoroutine方法即可開啟一個協同程式,也就是說該方法必須在MonoBehaviour或繼承於MonoBehaviour的類中呼叫。

相關推薦

基本函式生命週期執行規律

轉載自:http://www.cnblogs.com/SunboyL/p/Unity_CallSequence.html 官方參考手冊:http://docs.unity3d.com/Manual/ExecutionOrder.html unity指令碼從喚醒到銷燬

【WEB 三大核心 Servlet Filter Listener 的生命週期 執行流程 】

1. Servlet 的 生命週期 和 執行流程 1.1 Servlet 的執行流程 1. 客戶端傳送請求 (以 GET 或者 Post 方式傳送請求 ) 超連結 : <a href="servl

servlet生命週期執行流程

一 、生命週期 servlet 宣告週期可以分四個階段: 類裝載過程 init() 初始化過程 service() 服務過程,選擇doGet \ doPost destroy() 銷燬過程 servlet介面如下 public interface Servlet {

理解微信小程式的生命週期執行原理

  寫微信小程式,他的生命週期不能不知道,不知道小程式就會出現各種bug而無法解決。小助君公眾號帶你學習小程式的生命週期和執行原理。 小程式由兩大執行緒組成:負責介面的執行緒(view thread)和服務執行緒(appservice thread),各司其職由互相配合 小程式的生命週期借

servlet的生命週期執行原理

一、先從servlet容器說起:大家最為熟悉的servlet容器就是Tomcat ,Servlet 容器是如何管理 Servlet?         先看一下tomcat的容器模型: 從上圖可以看出 Tomcat 的容器分為四個等級,真正管理Servlet 的容器是C

JAVA執行緒的生命週期分析工具

執行緒的生命週期的六種狀態  其中一種 有效的方法就是看原始碼 1、NEW 在 虛擬機器的 中建立物件,初始化 成員變數。 2、RUNNABLE 在虛擬中建立執行緒 私有的程式計數器,虛擬機器棧, 等待虛擬機器 執行緒排程器,分配時間片。 3、BLOCKED

[轉載] Linux export變數的生命週期shell的生命週期相同,即shell指令碼執行完畢後,相應的export變數便失效了

說說shell指令碼中的export 和 source,bash 小弟剛剛接觸linux,對linux上的很多東西都比較陌生,所以寫一寫部落格,當做自己工作的總結和技術的積累吧,也是鞭策自己不斷努力的去學習。 今天之所以起這個標題,把export,source ,bash這三個命令放在一起講

vue js 的生命週期鉤子函式

 用Vue框架,熟悉它的生命週期可以讓開發更好的進行。 首先先看看官網的圖,詳細的給出了vue的生命週期:    簡單理解為 它可以總共分為8個階段: beforeCreate(建立前), created(建立後), beforeMount

Vue2.0 探索之路——生命週期鉤子函式的一些理解

前言 在使用vue一個多禮拜後,感覺現在還停留在初級階段,雖然知道怎麼和後端做資料互動,但是對於mounted這個掛載還不是很清楚的。放大之,對vue的生命週期不甚瞭解。只知道簡單的使用,而不知道為什麼,這對後面的踩坑是相當不利的。 因為我們有時候會在幾個鉤子函式裡做一些

vue2.0專案實戰(4)生命週期鉤子函式詳解

最近的專案都使用vue2.0來開發,不得不說,vue真的非常好用,大大減少了專案的開發週期。在踩坑的過程中,因為對vue的生命週期不是特別瞭解,所以有時候會在幾個鉤子函式裡做一些事情,什麼時候做,在哪個函式裡做,我們不清楚。 下面來總結一下vue的生命週期。 vue生命週期簡介 咱們從上圖可以很明顯的看出

Java多執行緒(二)、執行緒的生命週期狀態控制

、執行緒的生命週期 執行緒狀態轉換圖: 1、新建狀態 用new關鍵字和Thread類或其子類建立一個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態(runnable)。 注意:不能對已經啟動的

入坑JAVA多執行緒併發(二)執行緒的生命週期常用方法

執行緒的生命週期大致分為五種狀態: 1. 新建: 新建一個執行緒物件。 2.可執行: 啟動執行緒,呼叫start方法或者呼叫執行緒池的excute方法等,此時執行緒會進入可執行執行緒池中,等待獲取CPU的時間片。 3.執行 執行狀態,也就

View的生命週期Activity生命週期執行順序

前言 瞭解了View的生命週期和Activity的生命週期能夠讓我們更好的理解View的工作原理。 程式碼 我們先寫一個自定義View,然後打印出它的生命週期方法 public class MyTextView extends TextView

Vue生命週期鉤子函式的一些理解

vue生命週期簡介 咱們從上圖可以很明顯的看出現在vue2.0都包括了哪些生命週期的函數了。 生命週期探究 對於執行順序和什麼時候執行,看上面兩個圖基本有個瞭解了。下面我們將結合程式碼去看看鉤子函式的執行。 ps:下面程式碼可以直接複製出去執行 <

unity-預設函式生命週期執行順序)

概述 unity的API中詳細介紹了unity指令碼預設函式的執行順序,點這裡訪問。這裡主要介紹下面這張圖: 主要執行順序 編輯器->初始化->物理系統->輸入事件->遊戲邏輯->場景渲染->

Vue2.0生命週期鉤子函式

var vm = new Vue({ el: "#container", data: { test : 'hello world' }, beforeCreate: function(){ console.log(this);

Vue2.0生命週期鉤子函式的一些理解

前言: 鉤子就好像是把人的出生到死亡分成一個個階段,你肯定是在出生階段起名字,而不會在成年或者死亡的階段去起名字。或者說你想在出生階段去約炮,也是不行的。元件也是一樣,每個階段它的內部構造是不一樣的。所以一般特定的鉤子做特定的事,比如ajax獲取資料就可以在mounted階段。 一、vue生命週期簡介

Java多執行緒、執行緒的生命週期狀態控制

一、執行緒的生命週期 執行緒狀態轉換圖: 1、新建狀態 用new關鍵字和Thread類或其子類建立一個執行緒物件後,該執行緒物件就處於新生狀態。處於新生狀態的執行緒有自己的記憶體空間,通過呼叫start方法進入就緒狀態(runnable)。 注意:不能對已經啟動的執行緒再次呼叫star

vue學習筆記(二)vue的生命週期鉤子函式

前言 通過上一章的學習,我們已經初步的瞭解了vue到底是什麼東西,可以幹什麼,而這一篇部落格主要介紹vue的生命週期和它常用的鉤子函式,如果有學過java的園友可能有接觸到在學習servlet的時候學過servlet的生命週期servlet 載入--->例項化--->服務--->銷燬,對於v

2.Spring的Bean生命週期組裝方式

1.Spring IoC容器概述    Spring IoC容器:      Spring容器即體現了IoC原理    Spring容器通過讀取配置元資料負責對Beans例項化、配置和裝配     配置元資