⭐ Unity 序列帧播放脚本

news/2024/10/27 22:11:36/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class FrameImgControl : MonoBehaviour
{private Image img;[Header("序列帧")] [SerializeField] private Sprite[] sprites;/// <summary>/// 计时器/// </summary>private float m_timer = 0;/// <summary>/// 下标/// </summary>private int m_index = 0;/// <summary>/// 是否播放完毕/// </summary>private bool isOver = false;/// <summary>/// 切帧速度/// </summary>[Header("切帧速度")][SerializeField] private float _framingSpeed = 0.025f;/// <summary>/// 是否显示子孩子/// </summary>[Header("显示子对象")][SerializeField] private bool _isShowChild;[SerializeField] private bool _isShowChooseChild;[SerializeField] private int _chooseChild;/// <summary>/// 是否重复播放/// </summary>[Header("重复播放")][SerializeField] private bool _isReplay;[SerializeField] private int _replayIndex;[SerializeField]private float _replayWaitTime;/// <summary>/// 是否重复播放/// </summary>[Header("正反播放")][SerializeField] private bool _isPacReplay;private bool _isPlayOver = false;/// <summary>/// 反向播放/// </summary>[Header("反向播放")][SerializeField] private bool _isReversePlay;void Start(){if(!_isReversePlay){m_index = 0;img = transform.GetComponent<Image>();img.sprite = sprites[0];}else{m_index = sprites.Length - 1;img = transform.GetComponent<Image>();img.sprite = sprites[m_index];}}void Update(){if (!isOver){if(!_isReversePlay){SequenceFramePlay();}else{ReversePlay();}}}public void SequenceFramePlay(){m_timer += Time.deltaTime;if(m_timer >= _framingSpeed){if (m_index >= sprites.Length - 2){if(_isPacReplay){_isPlayOver = true;}else{if (!_isReplay){isOver = true;m_index = 0;}else{//m_index = _replayIndex;isOver = true;StartCoroutine(WaitReplayTime());}}if (_isShowChild){if(_isShowChooseChild){for (int i = 0; i < _chooseChild; i++){if (!transform.GetChild(i).gameObject.activeSelf){transform.GetChild(i).gameObject.SetActive(true);}}}else{for (int i = 0; i < transform.childCount; i++){if (!transform.GetChild(i).gameObject.activeSelf){transform.GetChild(i).gameObject.SetActive(true);}}}}}if(m_index <= 0){if (_isPacReplay){_isPlayOver = false;}}if (!_isPlayOver){m_index++;}else if(_isPlayOver && _isPacReplay){m_index--;}m_timer = 0;}img.sprite = sprites[m_index];}IEnumerator WaitReplayTime(){yield return new WaitForSeconds(_replayWaitTime);isOver = false;m_index = _replayIndex;}//反向播放public void ReversePlay(){m_timer += Time.deltaTime;if (m_timer >= _framingSpeed){m_timer = 0;m_index--;if (m_index <= 0){isOver = true;m_index = 0;}}img.sprite = sprites[m_index];}private void OnDisable(){if(!_isReversePlay){isOver = false;m_timer = 0;m_index = 0;}else{isOver = false;m_timer = 0;m_index = sprites.Length - 1;}}
}

感谢大家的观看,您的点赞和关注是我最大的动力

不定时更新知识点和干货呦~


http://www.ppmy.cn/news/1542447.html

相关文章

Spark和MapReduce场景应用和区别

Spark和MapReduce都是处理大数据的工具&#xff0c;但在数据处理方式及速度上存在显著差异&#xff0c;以下进行详细对比&#xff1a; Spark与MapReduce的主要差异点&#xff1a; Spark是基于内存处理数据的&#xff0c;而MapReduce则是基于磁盘。MapReduce将中间结果保存在磁…

【Docker命令】日常使用的Docker命令

Docker常用命令 1、基础命令2、容器管理3、镜像管理推送镜像 4、网络管理5、数据管理 1、基础命令 - docker run&#xff1a;运行一个容器,--name 指定容器的名称&#xff0c;-i 获取标准输入输出&#xff0c;-t显示在终端&#xff0c;-d放到后台运行&#xff0c;--rm容器停止…

深度学习-31-基于keras的十大经典算法之Transformer

文章目录 1 Transformer简介2 模型应用2.1 加载数据2.2 定义Transformer层2.3 定义嵌入层2.4 定义模型2.5 训练模型2.6 整体代码2.7 模型预测3 参考附录1 Transformer简介 一、背景 在深度学习的早期阶段,卷积神经网络(CNN)在图像识别和自然语言处理领域取得了显著的成功。…

【数据结构与算法】之链表经典算法大集合

本文主要内容是几个关于链表的初级经典算法的分享&#xff0c;都采用Java语言实现&#xff0c;话不多说&#xff0c;立马开始&#xff01; 注意&#xff1a;以下代码有关链表的算法实现均基于以下链表节点类&#xff1a; //链表节点类 public class ListNode {int val;ListNo…

Spring Boot框架:论坛网站开发的新选择

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Python小游戏9——天天酷跑

安装Pygame库。如果你还没有安装&#xff0c;可以使用以下命令&#xff1a; bash pip install pygame 游戏代码&#xff1a; python import pygame import random # 初始化Pygame pygame.init() # 屏幕尺寸 SCREEN_WIDTH 800 SCREEN_HEIGHT 600 screen pygame.display.set_m…

JavaCV 之均值滤波:图像降噪与模糊的权衡之道

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

交叉编译 perl-5.40.0(riscv64)

交叉编译 perl-5.40.0&#xff08;riscv64&#xff09; https://arsv.github.io/perl-cross/usage.html https://github.com/arsv/perl-cross 借助 perl-cross 进行交叉编译 https://www.perl.org/get.html#unix_like 这里获取 perl-5.40.0 的源码 https://github.com/arsv/pe…