国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

unity生命周期簡單敘述

這篇具有很好參考價值的文章主要介紹了unity生命周期簡單敘述。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.Unity 中常見的生命周期方法

1Awake(),2OnEnable(), 3Start(), 4FixedUpdate(), 5Update(), 6LateUpdate(), 7OnGUI(), 8OnDisable(), 9OnDestroy().

二.通常的執(zhí)行順序

特殊一點的方法Reset()

Reset 方法是在編輯器中調(diào)用的,并且僅在以下情況下執(zhí)行:

  1. 腳本組件被添加到 GameObject 上: 當(dāng)你將一個腳本組件添加到一個 GameObject 上時,如果該腳本包含 Reset 方法,該方法會在組件添加后立即被調(diào)用。

  2. 編輯器中修改了腳本的公共字段或?qū)傩裕?/strong> 如果在 Inspector 中修改了腳本的公共字段或?qū)傩裕?code>Reset 方法會在你停止編輯器播放或重新加載場景時調(diào)用。

  3. 重置組件: 在 Inspector 中,右鍵點擊腳本組件的標(biāo)題欄,選擇 "Reset" 選項,可以手動觸發(fā) Reset 方法。

這樣設(shè)計的目的是確保在編輯器中對腳本屬性的修改能夠及時地反映到場景中,同時提供了一個機(jī)會來確保編輯器中的屬性值與腳本的初始狀態(tài)保持一致。Reset 方法對于在編輯器中進(jìn)行調(diào)試、初始化和同步屬性狀態(tài)等方面非常有用。在運行時(在構(gòu)建后的實際游戲中),Reset 方法不會被調(diào)用。

1.Awake():

????????首先調(diào)用 Awake 方法。在這個階段,對象被實例化,但還沒有被激活。他先于OnEnable和Start方法調(diào)用。

2.OnEnable():

????????如果對象被啟用(enabled),接著調(diào)用 OnEnable。這是對象變?yōu)榧せ顮顟B(tài)時的第一個方法。

3.Start():

????????方法調(diào)用時機(jī):在對象第一次更新時調(diào)用。用于初始化,但是在 Awake 后調(diào)用。

4.FixedUpdate() 和 Update():

????????在 Start 方法執(zhí)行完畢后,按照固定的時間間隔調(diào)用 FixedUpdate 方法,然后在每一幀調(diào)用 Update 方法。

5.LateUpdate():

????????在 Update 方法執(zhí)行完畢后,調(diào)用 LateUpdate 方法。通常用于相機(jī)跟隨等操作,確保在所有 Update 方法執(zhí)行完畢后執(zhí)行。

6.OnGUI():

????????在 LateUpdate 方法執(zhí)行完畢后,調(diào)用 OnGUI 方法。用于渲染 GUI 元素。

7.OnDisable():

????????如果對象被禁用,調(diào)用 OnDisable 方法。在對象被禁用時執(zhí)行一些清理工作。

8.OnDestroy():

????????如果對象被銷毀,最后調(diào)用 OnDestroy 方法。在對象銷毀時執(zhí)行最終的清理工作。

三.一些使用建議

1.在使用awake和start時:

1.在生命周期中都只調(diào)用一次

2.awake在start之前調(diào)用,并且在所有游戲?qū)ο蟮腶wake方法都調(diào)用完才能調(diào)用某一個游戲?qū)ο蟮膕tart方法,所以如果start方法中有需要提前獲取才能運行的需求,一定要寫在awake中,以免報錯。

3.避免在 AwakeStart 中執(zhí)行過于耗時的操作,以免影響游戲啟動性能。這兩個方法應(yīng)該用于輕量級的初始化工作。

4.腳本的構(gòu)造函數(shù)一般先于Awake?和Start,但在unity中一般不直接使用構(gòu)造函數(shù)。

2.UpdateFixedUpdateLateUpdate的區(qū)別

  1. Update:
    • 調(diào)用頻率: 在每一幀都會調(diào)用。
    • 用途: 用于處理與游戲邏輯和用戶輸入相關(guān)的代碼。
    • 建議用法: 處理輸入、游戲邏輯、玩家控制等。
  2. FixedUpdate:
    • 調(diào)用頻率: 固定的時間間隔內(nèi)調(diào)用,通常默認(rèn)為每秒 50 次。
    • 用途: 用于處理物理計算和更新,確保在不同平臺上物理模擬的結(jié)果一致。
    • 建議用法: 處理剛體運動、物理碰撞等。
  3. LateUpdate:
    • 調(diào)用頻率: 在所有 UpdateFixedUpdate 方法執(zhí)行完畢后調(diào)用。
    • 用途: 用于處理相機(jī)跟隨邏輯,確保在所有對象的位置和旋轉(zhuǎn)更新后再執(zhí)行。
    • 建議用法: 處理相機(jī)跟隨、后處理效果等。

建議使用:

  • 盡量將用戶輸入和游戲邏輯放在 Update 中,因為它在每一幀都被調(diào)用,適合處理實時性較高的操作。
  • 將物理相關(guān)的計算放在 FixedUpdate 中,確保在固定時間間隔內(nèi)進(jìn)行物理更新,使得物理模擬更加準(zhǔn)確。
  • 使用 LateUpdate 處理相機(jī)跟隨邏輯,確保在所有對象的位置和旋轉(zhuǎn)更新后再執(zhí)行,避免相機(jī)跟隨的抖動或不穩(wěn)定情況。

3.onEnable和ondisable的區(qū)別

  1. OnEnable
    • 調(diào)用時機(jī): 在對象變?yōu)榧せ顮顟B(tài)(enabled)時調(diào)用,無論是在場景開始運行時還是在腳本實例化時。
    • 用途: 通常用于初始化工作、資源加載、訂閱事件或啟動協(xié)程等操作,確保在對象激活時執(zhí)行。
    • 注意事項: 不要在 OnEnable 中執(zhí)行耗時的操作,因為它可能會影響游戲的啟動性能。
  2. OnDisable
    • 調(diào)用時機(jī): 在對象變?yōu)榉羌せ顮顟B(tài)(disabled)時調(diào)用,例如對象被禁用或銷毀。
    • 用途: 通常用于清理工作、取消訂閱事件、停止協(xié)程等,確保在對象禁用或銷毀時執(zhí)行。
    • 注意事項: 不要在 OnDisable 中執(zhí)行需要對象處于激活狀態(tài)的操作。

建議使用:

  • OnEnable 中進(jìn)行資源加載、初始化、訂閱事件等操作,確保在對象激活時執(zhí)行。
  • OnDisable 中進(jìn)行清理工作、取消訂閱事件、停止協(xié)程等,確保在對象禁用或銷毀時執(zhí)行。
  • 避免在 OnEnableOnDisable 中執(zhí)行過多耗時的操作,以免影響游戲性能。

綜合使用 OnEnableOnDisable 方法,可以在對象的生命周期中實現(xiàn)一些必要的初始化和清理邏輯,確保對象在激活和禁用時能夠執(zhí)行特定的操作。

四.面試可能會問的問題

1.生命周期方法的執(zhí)行順序是什么?

Awake, OnEnable, Start, FixedUpdate, Update, LateUpdate, OnGUI, OnDisable, OnDestroy.

2.為什么有時候使用 Awake 而不是 Start?

Awake 在對象被實例化時調(diào)用,通常用于初始化,而 StartAwake 后執(zhí)行,適合進(jìn)行一次性的初始化工作。如果需要確保在所有腳本的 Awake 階段執(zhí)行,可以使用 Awake。

3.LateUpdate 適用于什么樣的情況?

LateUpdate 適合處理相機(jī)跟隨邏輯,確保在所有對象的位置和旋轉(zhuǎn)更新后再執(zhí)行,避免相機(jī)抖動或不穩(wěn)定情況。

4.如何處理對象被禁用和銷毀時的清理工作?

OnDisable 用于在對象被禁用時執(zhí)行清理操作,OnDestroy 用于在對象被銷毀時執(zhí)行最終的清理工作。

5.為什么不在 Update 中進(jìn)行物理計算?

FixedUpdate 適合處理物理計算,因為它以固定的時間間隔調(diào)用,確保在不同平臺上物理模擬的結(jié)果一致。

6.如何在編輯器中執(zhí)行初始化操作?

Reset 方法中執(zhí)行初始化操作,以確保在編輯器中對腳本屬性的修改能夠及時地反映到場景中。

7.協(xié)程能在哪些生命周期方法中使用?

協(xié)程通常在 Start 或之后的生命周期方法中使用,不建議在 Awake 中使用。

8.生命周期方法執(zhí)行的頻率和如何優(yōu)化性能?

生命周期方法的執(zhí)行頻率取決于引擎調(diào)用的頻率。避免在這些方法中執(zhí)行過多的計算,可以提高性能。

9.如何處理單例模式在 Unity 生命周期中的問題?

使用 Awake 方法來確保單例模式在對象實例化時初始化,并使用 OnDestroy 方法來處理對象銷毀時的清理工作。

例子

public class GameManager : MonoBehaviour
{
    // 單例模式實例
    private static GameManager instance;

    // 獲取單例實例的方法
    public static GameManager Instance
    {
        get
        {
            if (instance == null)
            {
                // 如果實例不存在,則嘗試在場景中找到已有的實例
                instance = FindObjectOfType<GameManager>();

                // 如果場景中不存在實例,則創(chuàng)建一個新的實例
                if (instance == null)
                {
                    GameObject obj = new GameObject("GameManager");
                    instance = obj.AddComponent<GameManager>();
                }
            }

            return instance;
        }
    }

    // 在 Awake 中確保單例的正確性
    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject); // 防止在場景切換時被銷毀
        }
        else
        {
            Destroy(gameObject); // 如果有重復(fù)的實例,銷毀新創(chuàng)建的實例
        }
    }

    // 游戲初始化邏輯
    private void Start()
    {
        // 這里可以添加游戲初始化的邏輯
    }

    // 游戲結(jié)束時的清理工作
    private void OnDestroy()
    {
        // 這里可以添加游戲結(jié)束時的清理工作
    }
}

10.MonoBehaviour 的生命周期方法和非 MonoBehaviour 類的區(qū)別是什么?

MonoBehaviour 類的生命周期方法由引擎調(diào)用,用于管理對象的生命周期,而非 MonoBehaviour 類則沒有這些特殊的生命周期方法。在非 MonoBehaviour 類中,需要手動管理對象的初始化和清理。文章來源地址http://www.zghlxwxcb.cn/news/detail-757314.html

到了這里,關(guān)于unity生命周期簡單敘述的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Vue3】學(xué)習(xí)筆記-生命周期

    【Vue3】學(xué)習(xí)筆記-生命周期

    Vue3.0中可以繼續(xù)使用Vue2.x中的生命周期鉤子,但有有兩個被更名: beforeDestroy 改名為 beforeUnmount destroyed 改名為 unmounted Vue3.0也提供了 Composition API 形式的生命周期鉤子,與Vue2.x中鉤子對應(yīng)關(guān)系如下: beforeCreate === setup() created ======= setup() beforeMount === onBeforeMount mounted ======= onMo

    2024年02月11日
    瀏覽(29)
  • Vue學(xué)習(xí)筆記(三)常用指令、生命周期

    Vue學(xué)習(xí)筆記(三)常用指令、生命周期

    vue指令:html標(biāo)簽上帶有 v- 前綴的特殊屬性,不同的指令具有不同的含義,可以實現(xiàn)不同的功能。 常用指令: 指令 作用 v-for 列表渲染,遍歷容器的元素或者對象的屬性 v-bind 為html標(biāo)簽綁定屬性值,如設(shè)置href,css樣式等 v-if/v-else-if/v-else 條件性的渲染某元素,判定為true時渲染

    2024年02月20日
    瀏覽(19)
  • unity的C#學(xué)習(xí)——多線程編程(線程的生命周期、創(chuàng)建與管理)與線程相關(guān)類

    多線程編程是 C# 一個比較難且涵蓋面比較廣的知識點,本文整理倉促而且屬于筆記向博客,有些地方必然還存在不嚴(yán)謹(jǐn)和錯誤,本人會在日后的使用過程中不斷完善。如果發(fā)現(xiàn)問題或有改進(jìn)意見可以在評論區(qū)提出,我會及時修改。 線程是程序的執(zhí)行流程,也被稱為 輕量級進(jìn)

    2024年02月12日
    瀏覽(31)
  • Unity Physics2D 2d物理引擎游戲 筆記

    Unity Physics2D 2d物理引擎游戲 筆記

    2d 材質(zhì) 里面可以設(shè)置 摩擦力 和 彈力 Simulated:是否在當(dāng)前的物理環(huán)境中模擬,取消勾選該框類似于Disable Rigidbody,但使用這個參數(shù)更加高效,因為Disable會銷毀內(nèi)部產(chǎn)生的GameObject,而取消勾選Simulated只是禁用。 Kinematic 動力學(xué)剛體 動力學(xué)剛體不受重力和力的影響,而受用戶的

    2023年04月24日
    瀏覽(93)
  • Unity-Unity腳本生命周期

    Unity-Unity腳本生命周期

    Unity腳本生命周期是指在Unity游戲引擎中,腳本在運行過程中所經(jīng)歷的各個階段。這些階段包括:初始化、更新、固定更新、銷毀等。下面我們來詳細(xì)講解一下Unity腳本生命周期的各個階段。 1. Awake Awake是腳本的初始化階段,當(dāng)腳本被實例化時,Awake函數(shù)會被調(diào)用且只執(zhí)行一次

    2024年02月14日
    瀏覽(33)
  • 【Unity】一文了解生命周期

    【Unity】一文了解生命周期

    又新開一個坑,這個系列主要是記錄Unity的干貨,就不像之前那幾個有點口水話了233 當(dāng)然我會改正 時隔半個月 經(jīng)歷了開學(xué) 換教室等等一系列雜七雜八的事情也算步入正軌了~ 沒雜七雜八的介紹什么,不水字?jǐn)?shù),直接開干?。ū┱摚?編寫順序會嚴(yán)格按照真實的生命周期順序

    2023年04月22日
    瀏覽(21)
  • Unity-生命周期

    Unity-生命周期

    Unity 中,有一個特別重要的知識點,生命周期函數(shù)。這些東西全部都是系統(tǒng)定義好的,運行時自動調(diào)用,但需要繼承 MonoBehaviour 類才能使用。這個類是從 Unity 中創(chuàng)建腳本就自動繼承了。 正是因為繼承了 MonoBehaviour 這個類,Unity 才能依次調(diào)用我們的腳本代碼,執(zhí)行游戲邏輯。

    2024年02月03日
    瀏覽(15)
  • Unity 腳本的生命周期

    Unity 腳本的生命周期

    Unity 腳本的生命周期有哪些?什么時機(jī)會觸發(fā)/執(zhí)行?什么時候用? 手冊 Unity 手冊地址 生命周期 初始化 方法說明: Awake:當(dāng)物體載入時立即調(diào)用一次,在 Start 函數(shù)之前調(diào)用。 OnEnable:在腳本對象啟用時調(diào)用。 Start:僅當(dāng)啟用腳本實例時,才會在第一幀調(diào)用。 Reset:編輯器下

    2024年04月09日
    瀏覽(21)
  • Unity之組件的生命周期

    Unity之組件的生命周期

    PS:第二天,依舊在摸魚學(xué)unity 我本身是由Web后端轉(zhuǎn)到了游戲后端,最近因為工作原因在學(xué)ET框架。學(xué)到了 ECS 編程模式開發(fā)(E —— Entity,C —— Component , S —— System)實體、組件、邏輯開發(fā)。 我是這么理解的:組件是掛載到實體上的,組件中記錄了實體所需要的數(shù)據(jù),然

    2024年02月02日
    瀏覽(20)
  • Games104現(xiàn)代游戲引擎學(xué)習(xí)筆記10

    Games104現(xiàn)代游戲引擎學(xué)習(xí)筆記10

    Physics Actors and Shapes Actor Static:靜態(tài)actor,例如擋板等 Actor Dynamic:動態(tài)actor,例如可移動的箱子 Trigger:觸發(fā)器 Actor-Kinematic:違背物理原則,由設(shè)計決定,不遵循真實物理原則 反物理物體容易導(dǎo)致很多數(shù)學(xué)運算出現(xiàn)問題 Triangle Meshes一般只允許靜態(tài)物體使用 Height Fields通常用于地

    2024年02月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包