真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用Unity怎么實(shí)現(xiàn)序列幀動(dòng)畫播放器-創(chuàng)新互聯(lián)

使用Unity怎么實(shí)現(xiàn)序列幀動(dòng)畫播放器?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),雙城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:雙城等地區(qū)。雙城做網(wǎng)站價(jià)格咨詢:18980820575
using UnityEngine;
using UnityEngine.UI;
using System;

/// 
/// 序列幀動(dòng)畫播放器
/// 支持UGUI的Image和Unity2D的SpriteRenderer
/// 
public class FrameAnimator : MonoBehaviour
{
 /// 
 /// 序列幀
 /// 
 public Sprite[] Frames{ get { return frames; } set { frames = value; } }

 [SerializeField]private Sprite[] frames = null;

 /// 
 /// 幀率,為正時(shí)正向播放,為負(fù)時(shí)反向播放
 /// 
 public float Framerate { get { return framerate; } set { framerate = value; } }

 [SerializeField] private float framerate = 20.0f;

 /// 
 /// 是否忽略timeScale
 /// 
 public bool IgnoreTimeScale{ get { return ignoreTimeScale; } set { ignoreTimeScale = value; } }

 [SerializeField]private bool ignoreTimeScale = true;

 /// 
 /// 是否循環(huán)
 /// 
 public bool Loop{ get { return loop; } set { loop = value; } }

 [SerializeField]private bool loop = true;

 //動(dòng)畫曲線
 [SerializeField]private AnimationCurve curve = new AnimationCurve (new Keyframe (0, 1, 0, 0), new Keyframe (1, 1, 0, 0));

 /// 
 /// 結(jié)束事件
 /// 在每次播放完一個(gè)周期時(shí)觸發(fā)
 /// 在循環(huán)模式下觸發(fā)此事件時(shí),當(dāng)前幀不一定為結(jié)束幀
 /// 
 public event Action FinishEvent;

 //目標(biāo)Image組件
 private Image image;
 //目標(biāo)SpriteRenderer組件
 private SpriteRenderer spriteRenderer;
 //當(dāng)前幀索引
 private int currentFrameIndex = 0;
 //下一次更新時(shí)間
 private float timer = 0.0f;
 //當(dāng)前幀率,通過曲線計(jì)算而來
 private float currentFramerate = 20.0f;

 /// 
 /// 重設(shè)動(dòng)畫
 /// 
 public void Reset ()
 {
 currentFrameIndex = framerate < 0 ? frames.Length - 1 : 0;
 }

 /// 
 /// 從停止的位置播放動(dòng)畫
 /// 
 public void Play ()
 {
 this.enabled = true;
 }

 /// 
 /// 暫停動(dòng)畫
 /// 
 public void Pause ()
 {
 this.enabled = false;
 }

 /// 
 /// 停止動(dòng)畫,將位置設(shè)為初始位置
 /// 
 public void Stop ()
 {
 Pause ();
 Reset ();
 }
 
 //自動(dòng)開啟動(dòng)畫
 void Start ()
 {
 image = this.GetComponent ();
 spriteRenderer = this.GetComponent ();
 #if UNITY_EDITOR
 if (image == null && spriteRenderer == null) {
 Debug.LogWarning ("No available component found. 'Image' or 'SpriteRenderer' required.", this.gameObject);
 }
 #endif
 }

 void Update ()
 {
 //幀數(shù)據(jù)無效,禁用腳本
 if (frames == null || frames.Length == 0) {
 this.enabled = false;
 } else {
 //從曲線值計(jì)算當(dāng)前幀率
 float curveValue = curve.Evaluate ((float)currentFrameIndex / frames.Length);
 float curvedFramerate = curveValue * framerate;
 //幀率有效
 if (curvedFramerate != 0) {
 //獲取當(dāng)前時(shí)間
 float time = ignoreTimeScale ? Time.unscaledTime : Time.time;
 //計(jì)算幀間隔時(shí)間
 float interval = Mathf.Abs (1.0f / curvedFramerate);
 //滿足更新條件,執(zhí)行更新操作
 if (time - timer > interval) {
 //執(zhí)行更新操作
 DoUpdate ();
 }
 }
 #if UNITY_EDITOR
 else {
 Debug.LogWarning ("Framerate got '0' value, animation stopped.");
 }
 #endif
 }
 }

 //具體更新操作
 private void DoUpdate ()
 {
 //計(jì)算新的索引
 int nextIndex = currentFrameIndex + (int)Mathf.Sign (currentFramerate);
 //索引越界,表示已經(jīng)到結(jié)束幀
 if (nextIndex < 0 || nextIndex >= frames.Length) {
 //廣播事件
 if (FinishEvent != null) {
 FinishEvent ();
 }
 //非循環(huán)模式,禁用腳本
 if (loop == false) {
 currentFrameIndex = Mathf.Clamp (currentFrameIndex, 0, frames.Length - 1);
 this.enabled = false;
 return;
 }
 }
 //鉗制索引
 currentFrameIndex = nextIndex % frames.Length;
 //更新圖片
 if (image != null) {
 image.sprite = frames [currentFrameIndex];
 } else if (spriteRenderer != null) {
 spriteRenderer.sprite = frames [currentFrameIndex];
 }
 //設(shè)置計(jì)時(shí)器為當(dāng)前時(shí)間
 timer = ignoreTimeScale ? Time.unscaledTime : Time.time;
 }
}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


標(biāo)題名稱:使用Unity怎么實(shí)現(xiàn)序列幀動(dòng)畫播放器-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://weahome.cn/article/dhpddp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部