Unity基礎學習(八)時間相關內容Time

? ? ? ? 眾所周知,每一個游戲都會有自己的時間。這個時間可以是內部,從游戲開始的時間,也可以是外部真實的物理時間,時間相關內容 主要用于游戲中 參與位移計時 時間暫停等。那么我們今天就來看看Unity中和時間相關的內容。

Unity時間功能速查表

類別屬性/方法作用Time.timeScale影響應用場景示例代碼
基礎時間Time.time游戲啟動后的累計時間(秒)計時器、技能冷卻float startTime = Time.time;
Time.realtimeSinceStartup游戲啟動后的真實時間(秒)實際游戲時長記錄、不受暫停影響的邏輯float realTime = Time.realtimeSinceStartup;
Time.timeSinceLevelLoad當前場景加載后的累計時間(秒)場景事件觸發if (Time.timeSinceLevelLoad > 10f) { ... }
增量時間Time.deltaTime上一幀到當前幀的時間間隔(秒)平滑運動、動畫transform.Translate(Vector3.forward * speed * Time.deltaTime);
Time.unscaledDeltaTime上一幀到當前幀的真實時間間隔游戲暫停時的UI動畫uiElement.Translate(Vector2.up * speed * Time.unscaledDeltaTime);
時間縮放Time.timeScale全局時間縮放(0=暫停,1=正常,>1=加速)-暫停、慢動作、加速效果Time.timeScale = 0; // 暫停游戲
固定時間步長Time.fixedDeltaTime物理更新(FixedUpdate)的時間間隔(默認0.02秒)剛體運動、物理模擬rigidbody.AddForce(Vector3.up * force * Time.fixedDeltaTime);
其他屬性Time.frameCount游戲啟動后的總渲染幀數性能測試、按幀觸發邏輯if (Time.frameCount % 60 == 0) { ... } // 每秒執行一次
Time.maximumDeltaTime單幀最大允許時間(避免卡頓導致邏輯錯誤,默認0.333秒)-極端卡頓保護通過Edit > Project Settings > Time調整
協程與時間控制WaitForSeconds協程等待指定時間(受Time.timeScale影響)受時間縮放的延遲邏輯yield return new WaitForSeconds(2f);
WaitForSecondsRealtime協程等待真實時間(不受Time.timeScale影響)不受暫停影響的延遲邏輯yield return new WaitForSecondsRealtime(2f);
暫停與恢復Time.timeScale = 0暫停游戲邏輯(需額外暫停音頻)-游戲暫停菜單Time.timeScale = 0; AudioListener.pause = true;
Time.timeScale = 1恢復游戲邏輯(需恢復音頻)-恢復游戲運行Time.timeScale = 1; AudioListener.pause = false;

依次介紹:

一、什么是TimeScale?

????????Time.timeScale?是 Unity 中一個全局控制游戲時間流速的浮點數值。你可以通過修改它的值,直接改變游戲內時間的流逝速度。說人話,就是倍速,你看視頻有倍速選擇吧,這個也是。這個就是里面的時間流速,等會我們可以結合著Time.time具體查看。

基本規則
默認值為 1,表示時間正常流逝。
設為 0:游戲時間完全暫停(類似“游戲暫停”效果)。
大于 1(如 2):時間加速(雙倍速運行)。
介于 0 和 1(如 0.5):時間減速(慢動作效果)。

使用:

// 暫停游戲
Time.timeScale = 0;
// 恢復游戲
Time.timeScale = 1;
// 慢動作效果(50%速度)
Time.timeScale = 0.5f;

二、基礎時間

1、Time.time:游戲啟動后的累計時間(秒)

當我們在Update中打印時間信息時,發現就是游戲開始了多少時間。 ??

Debug.Log(Time.time);

接下來我們改變一下速度看看,可以看到明顯快了很多。所以他是受到Time.timeScale影響的

Time.timeScale =2;
Debug.Log(Time.time);

?

2、Time.realtimeSinceStartup,游戲啟動后的真實時間(秒)。就是游戲一旦開始,就開始計時。

將時間規模調至0后,時間仍在流逝,所以他不受timeScale的影響。?

?

3、Time.timeSinceLevelLoad:當前場景加載后的累計時間(秒)。簡而言之就是從當前場景加載完成后開始計時。

可見其受到timeScale的影響。好的你應該以及知道了,關于timeScale這玩意的作用了,接下來我們不再贅述。

二、增量時間?

1、Time.deltaTime:上一幀到當前幀的時間間隔(秒)。

????????這個是什么意思呢,意思就是:在游戲中我們的畫面都是一幀一幀的拼湊起來的,他不是連續的,之所以我們看著是連續的,是因為其間隔時間很短很短,短倒你無法察覺。一般來說看視頻24幀就行。但是,由于你的游戲是和你的設備性能息息相關的,所以幀率是波動的。也就是說一秒你可能跑90幀,別人跑120幀,那么他就可以在這多的30幀打你。但是每一幀的間隔時間你是可以在Unity中自己控制的,為了保證大家的幀率基本差不多,你可以將這個幀間隔時間設大一點,讓大家處于同一起跑線。

? ? ? ? 請看:可以看出并不固定。這就是幀的波動,取決于你的設備性能。下面的時間也是一樣,只是不會受到Time.timeScale的影響。

?

2、Time.unscaledDeltaTime:上一幀到當前幀的時間間隔(秒)

將timeScale調為0

關于協程的時間相關我們后面學習協程的時候學習,現在先跳過。

三、其他屬性

1、Time.fixedDeltaTime?物理更新(FixedUpdate)的時間間隔(默認0.02秒)

????????請注意是在FixedUpdate中打印哈,不然你就會一直看到有數值。注意到當我們調成0之后,他就不會在增加次數了,所以他是有影響的。?

這個也分為受Time.timeScale影響和不受Time.timeScale影響的Time.fixedUnscaledDeltaTime

2、Time.frameCount?游戲啟動后的總渲染幀數 這個就是幀數

3、Time.maximumDeltaTime:單幀最大允許時間(避免卡頓導致邏輯錯誤,默認0.333秒)

????????Time.maximumDeltaTime是 Unity 中一個用于?防止極端卡頓導致邏輯異常?的安全機制。它的核心作用是限制單幀的增量時間(Time.deltaTime)的最大值,避免因幀率驟降引發游戲邏輯錯誤(如物體瞬移、物理穿透等)。 就是說當前這一幀解決不了的事情,給下一幀來解決,不要一直停留在原地,因為沒有人會一直等你。??

四、快捷設置

在Edit ->ProjecSetting->Time下面可以自己設置相關的參數:

1. Fixed Timestep(固定時間步長)

????????默認值:0.02?秒(對應每秒 50 次物理更新)。
????????作用:控制物理引擎(FixedUpdate)的更新頻率,確保物理模擬的穩定性。
值越小:物理模擬更精確,但 CPU 負擔增加(如?0.01?秒對應每秒 100 次更新)。值越大:物理模擬頻率降低,可能導致剛體運動不夠平滑(如?0.04?秒對應每秒 25 次更新)。

2. Maximum Allowed Timestep(單幀最大允許時間步長)

????????默認值:0.3333333?秒(約 333 毫秒)。
????????作用:限制單幀的最大增量時間(Time.deltaTime),防止極端卡頓導致邏輯異常(如物體瞬移)。

工作原理

????????當某一幀耗時超過此值時,Unity 會將時間拆分為多個小段(每段不超過該值),并逐段更新邏輯和物理。例如:若一幀耗時 1 秒,且此值設為?0.333,Unity 會將該幀拆分為 3 次邏輯更新(每次?0.333?秒)和 1 次剩余更新(0.001?秒)。

設置建議

????????移動端或性能波動大的平臺:保持默認值,避免邏輯失控。高精度物理游戲:可降低至?0.1?秒,但會增加 CPU 負載。

3.Maximum Particle Timestep(粒子系統最大時間步長)

默認值:0.03?秒(30 毫秒)。
作用:限制粒子系統(ParticleSystem)單幀更新的最大時間步長,防止極端卡頓導致粒子效果異常(如粒子突然爆炸或消失)。和上面的最大幀間隔時間類似

工作原理

????????若一幀耗時超過此值,粒子系統會按此步長分段更新。例如,一幀耗時?0.1?秒,粒子系統會分 4 次更新(0.03 + 0.03 + 0.03 + 0.01)。

參數關聯對象調整優先級典型場景
Fixed Timestep物理引擎(剛體)賽車游戲、物理解謎
Maximum Allowed Timestep游戲邏輯更新移動端游戲、開放世界
Time Scale全局時間控制動態調整暫停菜單、慢動作特效
Maximum Particle Timestep粒子系統爆炸特效、復雜粒子場景

就這樣,債見!?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79478.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java游戲服務器開發流水賬(1)游戲服務器的架構淺析

新項目立項停滯,頭大。近期讀老項目代碼看到Java,筆記記錄一下。 為什么要做服務器的架構 游戲服務器架構設計具有多方面的重要意義,它直接關系到游戲的性能、可擴展性、穩定性以及用戶體驗等關鍵因素 確保游戲的流暢運行 優化數據處理&a…

計算機視覺與深度學習 | 基于Transformer的低照度圖像增強技術

基于Transformer的低照度圖像增強技術通過結合Transformer的全局建模能力和傳統圖像增強理論(如Retinex),在保留顏色信息、抑制噪聲和平衡亮度方面展現出顯著優勢。以下是其核心原理、關鍵公式及典型代碼實現: 一、原理分析 1. 全局依賴建模與局部特征融合 Transformer的核…

Linux 文件目錄管理常用命令

pwd 顯示當前絕對路徑 cd 切換目錄 指令備注cd -回退cd …返回上一層cd ~切換到用戶主目錄 ls 列出目錄的內容 指令備注ls -a顯示當前目錄中的所有文件和目錄,包括隱藏文件ls -l以長格式顯示當前目錄中的文件和目錄ls -hl以人類可讀的方式顯示當前目錄中的文…

【Linux 系統調試】性能分析工具perf使用與調試方法

目錄 一、perf基本概念 1?. 事件類型? 2?. 低開銷高精度 3?. 工具定位? 二、安裝與基礎配置 1. 安裝方法 2. 啟用符號調試 三、perf工作原理 1. 數據采集機制 2. 硬件事件轉化流程 四、perf應用場景 1. 系統瓶頸定位 2. 鎖競爭優化 3. 緩存優化 五、perf高級…

嵌入式中屏幕的通信方式

LCD屏通信方式詳解 LCD屏(液晶顯示屏)的通信方式直接影響其數據傳輸效率、顯示刷新速度及硬件設計復雜度。根據應用場景和需求,LCD屏的通信方式主要分為以下三類,每種方式在協議類型、數據速率、硬件成本及適用場景上存在顯著差異…

【el-admin】el-admin關聯數據字典

數據字典使用 一、新增數據字典1、新增【圖書狀態】和【圖書類型】數據字典2、編輯字典值 二、代碼生成配置1、表單設置2、關聯字典3、驗證關聯數據字典 三、查詢操作1、模糊查詢2、按類別查詢(下拉框) 四、數據校驗 一、新增數據字典 1、新增【圖書狀態…

【Spring】Spring MVC筆記

文章目錄 一、SpringMVC簡介1、什么是MVC2、什么是SpringMVC3、SpringMVC的特點 二、HelloWorld1、開發環境2、創建maven工程a>添加web模塊b>打包方式:warc>引入依賴 3、配置web.xmla>默認配置方式b>擴展配置方式 4、創建請求控制器5、創建springMVC…

如何在大型項目中解決 VsCode 語言服務器崩潰的問題

在大型C/C項目中,VS Code的語言服務器(如C/C擴展)可能因內存不足或配置不當頻繁崩潰。本文結合系統資源分析與實戰技巧,提供一套完整的解決方案。 一、問題根源診斷 1.1 內存瓶頸分析 通過top命令查看系統資源使用情況&#xff…

LeetCode百題刷002摩爾投票法

遇到的問題都有解決的方案,希望我的博客可以為你提供一些幫助 圖片源自leetcode 題目:169. 多數元素 - 力扣(LeetCode) 一、排序法 題目要求需要找到多數值(元素個數>n/2)并返回這個值。一般會想到先…

Android Studio Gradle 中 只顯示 Tasks 中沒有 build 選項解決辦法

一、問題描述 想把項目中某一個模塊的代碼單獨打包成 aar ,之前是點擊 AndroidStudio 右側的 Gradle 選項,然后再點擊需要打包的模塊找到 build 進行打包,但是卻發現沒有 build 選項。 二、解決辦法 1、設置中勾選 Configure all Gradle tasks… 選項 …

深入淺出之STL源碼分析2_stl與標準庫,編譯器的關系

引言 在第一篇博客中,深入淺出之STL源碼分析1_vector基本操作-CSDN博客 我們將引出下面的幾個問題 1.剛才我提到了我的編譯器版本是g 11.4.0,而我們要講解的是STL(標準模板庫),那么二者之間的關系是什么?…

(十二)深入了解AVFoundation-采集:人臉識別與元數據處理

(一)深入了解AVFoundation:框架概述與核心模塊解析-CSDN博客 (二) 深入了解AVFoundation - 播放:AVFoundation 播放基礎入門-CSDN博客 (三)深入了解AVFoundation-播放&#xff1…

Kafka 與 RabbitMQ、RocketMQ 有何不同?

一、不同的誕生背景,塑造了不同的“性格” 名稱 背景與目標 產品定位 Kafka 為了解決 LinkedIn 的日志收集瓶頸,強調吞吐與持久化 更像一個“可持久化的分布式日志系統” RabbitMQ 出自金融通信協議 AMQP 的實現,強調協議標準與廣泛適…

配置 Web 服務器練習

一、要求 1.通過https://ip 可以訪問到網站首頁 2.通過 https://ip/private/ 實現用戶訪問控制,僅允許已經添加的 tom,jerry 能夠訪問到 private 子路徑的界面 3.通過 https://ip/vrit/ 實現能夠訪問到將系統 /nginx/virt 目錄下的網頁文件&#xff0…

MySQL索引詳解(下)(SQL性能分析,索引使用)

索引是MySQL性能優化的核心,但如何精準分析查詢瓶頸、合理設計索引,是開發者必須掌握的技能。本文結合實戰案例,系統講解SQL性能分析工具鏈與索引使用技巧,幫助讀者構建高性能數據庫系統。 一、SQL性能分析:從宏觀到微…

招行數字金融挑戰賽數據賽道賽題一

賽題描述:根據提供的用戶行為數據,選手需要分析用戶行為特征與廣告內容的匹配關系,準確預測用戶對測試集廣告的點擊情況,通過AUC計算得分。 得分0.6120,排名60。 嘗試了很多模型都沒有能夠提升效果,好奇大…

ORB-SLAM3和VINS-MONO的對比

直接給總結,整體上orbslam3(僅考慮帶imu)在初始化階段是松耦合,localmap和全局地圖優化是緊耦合。而vins mono則是全程緊耦合。然后兩者最大的區別就在于vins mono其實沒有對地圖點進行優化,為了輕量化,它一…

安裝typescript時,npm install -g typescript報錯

刪除C:\Users\用戶\下的.npmrc文件,如果你的沒有,看是不是因為將隱藏的項目勾選上了,然后去掉勾選。 重新輸入

[GESP202503 四級] 二階矩陣c++

題目描述 小 A 有一個 n 行 m 列的矩陣 A。 小 A 認為一個 22 的矩陣 D 是好的,當且僅當 。其中 表示矩陣 D 的第 i 行第 j 列的元素。 小 A 想知道 A 中有多少個好的子矩陣。 輸入 第一行,兩個正整數 n,m。 接下來 n 行,每行 m 個整數…

基于flask+pandas+csv的報表實現

基于大模型根據提示詞去寫SQL執行SQL返回結果輸出報表技術上可行的,但為啥還要基于pandas去實現呢? 原因有以下幾點: 1、大模型無法滿足實時性輸出報表的需求; 2、使用大模型比較適合數據量比較大的場景,大模型主要…