Unity Animation的其中一種運用方式

Animation是Unity的舊的動畫系統,先說目的,其使用是為了在UI中播放動效,并且在動效播放結束后接自定義事件而設計的
在這里插入圖片描述
在這里插入圖片描述

設計的關鍵點在于,這個腳本不是通過Animation直接播放動畫片段,而是通過修改AnimationState的normalizedTime,并且調用Animation.Sample方法來直接應用動畫狀態到具體時間點,然后再通過時間判斷是否播放結束,如果播放結束,那么調用onComplete回調

- 具體分析

在這里插入圖片描述
在決定播放動畫時,先調用Stop方法,停止所有動畫,然后重置_progressTime,再調用Play方法,讓動畫從頭開始播放,這里的Play和Stop的區別在于,Play相當于將動畫片段的normalizedTime變為0,然后調用Sample方法,即立刻將動畫片段重置到初始狀態,而Stop則是在此時停止動畫片段,并不會重置到初始狀態
,然后初始化_lastFrameTime,isPlaying狀態為true

在這里插入圖片描述
先判斷是否在播放狀態,然后獲取當前播放的動畫片段,再獲取_currentTime,這里_lastFrameTime和_currentTime全部是使用的Time.unscaledTime,因為這個是不受時間縮放影響的時間,即獲取的是游戲世界中真實的時間,然后計算兩幀之間的差值,即幀之間的時間間隔,通過這個時間間隔,乘動畫片段的播放速度,累加得到動畫的播放進度_progressTime。
然后判斷是否設置為Loop模式,如果是,就通過取模操作計算normalizedTime,否則直接計算已經播放的百分比,然后通過Sample直接應用對應時間點的動畫狀態。
最后,判斷進度是否達到或超過總長度,如果是的話,且不是Loop模式,則調用onComplete回調,同時將isPlaying置為false。
通過這種設計,能夠在具體的時間點插入回調,在Update中自定義更新動畫片段的狀態,其核心就是調整動畫的normalizedTime以及應用Sample方法

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

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

相關文章

matplotlib——南丁格爾玫瑰

南丁格爾玫瑰圖(Nightingale Rose Chart),是一種特殊形式的柱狀圖,它以南丁格爾(Florence Nightingale)命名,她在1858年首次使用這種圖表來展示戰爭期間士兵死亡原因的數據。 它將數據繪制在極坐…

TensorFlow面試題及參考答案

目錄 什么是 TensorFlow 的計算圖?詳細描述 TensorFlow 計算圖的組成結構(節點、邊、會話) 它與動態圖(Eager Execution)的區別是什么?TensorFlow 靜態計算圖與動態圖(Eager Execution)的區別及適用場景是什么? 解釋張量(Tensor)的概念及其在 TensorFlow 中的作用…

6.go語言函數

Go語言中的函數是組織代碼的最小單元,用于封裝一段代碼,完成特定的功能。函數的使用可以減少代碼冗余,提高代碼的可讀性和可維護性。 函數的基本定義和語法 在Go語言中,定義一個函數的基本語法如下: func functionN…

SpringCould微服務架構之Docker(4)

Docker ce是社區版。 安裝docker之前,先安裝yum-util 。 安裝docker之前,一定要先關閉防火墻。

Keepalived 實現高可用方案

Keepalived簡介 ?Keepalived? 是一個基于 ?VRRP(Virtual Router Redundancy Protocol)協議?的高可用性解決方案,主要用于實現?服務故障自動切換(Failover)和負載均衡?。通過管理虛擬 IP(VIP&#xf…

WPS JS宏編程教程(從基礎到進階)--第二部分:WPS對象模型與核心操作

第二部分:WPS對象模型與核心操作 WPS對象的屬性、方法、集合 工作簿對象常用表達方式工作表對象常用表達方式單元格對象常用表達方式 單元格操作實戰 單元格復制與重定位單元格偏移與尺寸調整 顏色設置專題 索引顏色與RGB顏色按條件動態設置單元格顏色 第二部分&…

基于DrissionPage的TB商品信息采集與可視化分析

一、項目背景 隨著電子商務的快速發展,淘寶作為中國最大的電商平臺之一,擁有海量的商品信息。這些數據對于市場分析、用戶行為研究以及競爭情報收集具有重要意義。然而,由于淘寶的反爬蟲機制和復雜的頁面結構,直接獲取商品信息并不容易。尤其是在電商行業高速發展的今天,商…

【003安卓開發方案調研】之ReactNative技術開發安卓

基于2025年最新行業動態和搜索資料,以下是針對國內使用React Native(RN)開發安卓應用的深度分析: 一、技術成熟度評估 1. 核心架構升級 新架構全面普及:2024年起,React Native的 新架構(Fabri…

JS數組方法

數組方法 一、數組 JavaScript 數組的大小是可調整的,并且可以包含不同 數據類型。(當不需要這些特性時,請使用 類型數組。) 注:JavaScript 類型數組是類似數組的對象,它提供了一種在內存緩沖區中讀取和寫…

【一起學Rust | Tauri2.0框架】深入淺出 Tauri 2.0 應用調試:從新手到專家的蛻變

前言 Tauri 是一款備受矚目的跨平臺桌面應用開發框架,它允許開發者使用 Web 技術棧(HTML、CSS、JavaScript)構建高性能、安全的原生應用。Tauri 2.0 的發布帶來了諸多令人興奮的新特性和改進,進一步提升了開發體驗和應用性能。然…

Python項目-基于Python的網絡爬蟲與數據可視化系統

1. 項目簡介 在當今數據驅動的時代,網絡爬蟲和數據可視化已成為獲取、分析和展示信息的重要工具。本文將詳細介紹如何使用Python構建一個完整的網絡爬蟲與數據可視化系統,該系統能夠自動從互聯網收集數據,進行處理分析,并通過直觀…

TCP/IP三次握手的過程,為什么要3次?

一:過程 第一次(SYN): 客戶端發送一個帶有SYN標志的TCP報文段給服務器,設置SYN1,并攜帶初始序列號Seqx(隨機值),進入SYN_SENT狀態。等待服務器相應。 第二次&#xff08…

消息隊列性能比拼: Kafka vs RabbitMQ

本內容是對知名性能評測博主 Anton Putra Kafka vs RabbitMQ Performance 內容的翻譯與整理, 有適當刪減, 相關數據和結論以原作結論為準。 簡介 在本視頻中,我們將首先比較 Apache Kafka 和傳統的 RabbitMQ。然后,在第二輪測試中,會將 Kaf…

打磨和修改:字帖自動生成

功能增加一些。 一個人和大語言模型對話的結果。 不過是重復性勞動,特別需要創意的地方還是不容易做到。

電腦干貨:萬能驅動--EasyDrv8

目錄 萬能驅動EasyDrv8 功能介紹 主程序界面 驅動解壓與安裝 PE環境支持 系統部署環境 桌面環境一鍵解決方案 萬能驅動8電腦版是由IT天空出品的一款智能識別電腦硬件并自動安裝驅動的工具,一般又稱為it天空萬能驅動,萬能驅動vip版,簡稱…

LeetCode熱題100JS(79/100)第十五天|347|295|121|55|45

347. 前 K 個高頻元素 題目鏈接:347. 前 K 個高頻元素 難度:中等 刷題狀態:1刷 新知識: 解題過程 思考 示例 1: 輸入: nums [1,1,1,2,2,3], k 2 輸出: [1,2] 沒思路,看答案 題解分析 參考題解鏈接&#xff1a…

Sentinel 限流利器(功能以及源碼解析)

Sentinel簡介 Sentinel是阿里開源的一款面向分布式、多語言異構化服務架構的流量治理組件。 主要以流量為切入點,從流量路由、流量控制、流量整形、熔斷降級、系統自適應過載保護、熱點流量防護等多個維度來幫助開發者保障微服務的穩定性。 核心概念 資源 資源是…

子數組 之 logTrick算法,求解或,與,LCM,GCD

文章目錄 gcd的問題最大公約數 求解子數組的&,|,lcm,gcd的最值or計數問題,如果采用暴力的做法,那么時間復雜度會來到o(n^2),其實在求解的過程中,會出現很多的結果不變的情況,所以我們就可以提前結束 存在一定的單調性&#x…

How to use pgbench to test performance for PostgreSQL?

pgbench 是一個用于測試 PostgreSQL 數據庫性能的基準測試工具。通過模擬多個客戶端并發執行 SQL 查詢,它可以幫助你評估數據庫的性能。以下是使用 pgbench 的基本步驟: 安裝 pgbench pgbench 是 PostgreSQL 的一部分,因此在安裝 PostgreSQ…

應用服務接口第二次請求一直pending問題

目錄 一、問題背景二、問題排查過程三、解決方案四、總結 一、問題背景 升級內容發布到灰度環境,驗證相關服務,查看接口調用日志,發現第一次請求正常,第二次相同接口請求就一直pending,其他服務也是如此 二、問題排查…