unity ugui序列帧动画

2023-11-15

1. 使用unity自带的动画功能

2.在脚本中不停切换一个UI的图片以实现动画效果

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using System;

[RequireComponent(typeof(Image))]
public class UGUISpriteAnimation : MonoBehaviour
{
    private Image ImageSource;
    private int mCurFrame = 0;
    private float mDelta = 0;

    public float FPS = 5;
    public List<Sprite> SpriteFrames;
    public bool IsPlaying = false;
    public bool Foward = true;
    public bool AutoPlay = false;
    public bool Loop = false;

    public int FrameCount
    {
        get
        {
            return SpriteFrames.Count;
        }
    }

    void Awake()
    {
        ImageSource = GetComponent<Image>();
    }

    void Start()
    {
        if (AutoPlay)
        {
            Play();
        }
        else
        {
            IsPlaying = false;
        }
    }

    private void SetSprite(int idx)
    {
        ImageSource.sprite = SpriteFrames[idx];
        ImageSource.SetNativeSize();
    }

    public void Play()
    {
        IsPlaying = true;
        Foward = true;
    }

    public void PlayReverse()
    {
        IsPlaying = true;
        Foward = false;
    }

    void Update()
    {
        if (!IsPlaying || 0 == FrameCount)
        {
            return;
        }

        mDelta += Time.deltaTime;
        if (mDelta > 1 / FPS)
        {
            mDelta = 0;
            if (Foward)
            {
                mCurFrame++;
            }
            else
            {
                mCurFrame--;
            }

            if (mCurFrame >= FrameCount)
            {
                if (Loop)
                {
                    mCurFrame = 0;
                }
                else
                {
                    IsPlaying = false;
                    return;
                }
            }
            else if (mCurFrame < 0)
            {
                if (Loop)
                {
                    mCurFrame = FrameCount - 1;
                }
                else
                {
                    IsPlaying = false;
                    return;
                }
            }

            SetSprite(mCurFrame);
        }
    }

    public void Pause()
    {
        IsPlaying = false;
    }

    public void Resume()
    {
        if (!IsPlaying)
        {
            IsPlaying = true;
        }
    }

    public void Stop()
    {
        mCurFrame = 0;
        SetSprite(mCurFrame);
        IsPlaying = false;
    }

    public void Rewind()
    {
        mCurFrame = 0;
        SetSprite(mCurFrame);
        Play();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity ugui序列帧动画 的相关文章

  • C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化 将object对象序列化常见的两种方式即string和xml对象 第一种将object转换为string对象 这种比较简单没有什么可谈的 public string

随机推荐

  • Eclipse-修改工程名

    直接修改工程可能会产生一些莫名其妙的问题 需遵循以下四步 1 右键工程 Refactor gt Rename 或选中工程按F2 修改名称 2 右键工程 Properties gt Web Project Settings 修改Context
  • 性能测试的方法

    性能测试主要采用的方法有 1 负载测试 通过对系统不断的加压 直到超过预定的指标或者部分资源达到一种饱和状态不能再加压为止 该方法主要用于找到系统最大的负载能力 为性能调优提供数据 2 压力测试 指系统已经达到一定的饱和程度 CPU 磁盘等
  • Django2.0-redis

    redis 概述 redis是一种nosql数据库 他的数据是保存在内存中 同时redis可以定时把内存数据同步到磁盘 即可以将数据持久化 并且他比memcached支持更多的数据结构 string list列表 队列和栈 set 集合 s
  • LRU和LFU的区别

    分析 回答 LRU和LFU都是内存管理的页面置换算法 LRU 即 最近最少使用淘汰算法 Least Recently Used LRU是淘汰最长时间没有被使用的页面 LRU关键是看数据最后一次被使用到发生替换的时间长短 时间越长 数据就会被
  • 都在用 AI 生成美少女,而我却。。。

    最近 AI 画画特别的火 你能从网上看到非常多好看的图片 于是我就开始了我的安装之旅 我看到的图是这样的 这样的 还有这样的 然后我就开始了我的 AI 安装生成计划 安装环境 首先我们需要安装 Python 环境 因为这个需要显卡 我估计我
  • [C++]for 循环多个限制条件

    for int i 0 j 0 i lt 5 j lt 7 i j 那么最后判断的会是j lt 7的条件 应该写成 for int i 0 j 0 i lt 5 j lt 7 i j 转载于 https www cnblogs com dr
  • django celery简单 例子

    django celery简单 例子 https docs celeryq dev en latest django first steps with django html pip list pip install Django4 2 3
  • Oracle的基本数据类型总结

    1 字符类型 CHAR 一个定长字符串 当位数不足自动用空格填充来达到其最大长度 如非NULL的CHAR 12 总是包含12字节信息 CHAR字段最多可以存储2 000字节的信息 VARCHAR2 这是一个变长字符串 与CHAR 类型不同
  • JavaScript WebGL 三维相关概念

    引子 在 JavaScript WebGL 矩阵之后 发现在实现三维效果之前还有一些概念需要理解 就去查了下资料 按照自己的习惯整合了一下 Origin My GitHub 齐次坐标 三维坐标理论上三个分量就够了 但在看相关程序的时候 发现
  • linux spi 设备节点 读写

    本文记录spi设备节点的操作方法 SPI总线设备文件名通常为 dev spidevN P N 0 1 2 P 0 1 2 其中N表示第几路SPI总线 而P表示在该路SPI总线中使用哪个CS信号线 参考链接 http www wzaobao
  • 【深度解析→博文总结】李宏毅机器学习2023作业04Self-attention(Speaker Identification)

    文章目录 系列文章 简要说明 视频分享 作业详情 调参记录 Simple Baseline 0 66025 Medium Baseline 0 81750 Stong Baseline 0 88500 Boss Baseline 0 931
  • uni-app项目中实现录音管理器(recorderManager)

    项目场景 通过微信小程序进行录音上传到服务器端进行分析诊断 得出设备发生故障的原因 问题描述 使用uni app实现声音的采集以及回放和上传等功能 并且用户可以自定义录制时长 录制时长有上限和下限 效果展示 原因分析 uni app 官网中
  • 多案分库分表带来的问题-跨库关联查询

    比如查询在合同信息的时候要关联客户数据 由于是合同数据和客户数据是在不同的数据库 那么我们肯定不能直接使用join 的这种方式去做关联查询 我们有几种主要的解决方案 1 字段冗余 比如我们查询合同库的合同表的时候需要关联客户库的客户表 我们
  • MPQ8633性能指标测试与调测分享

    目录 基于MPQ8633A测试分析 1 开关电源的三种基本拓扑结构 1 1 buck电路的基本拓扑以及原理 2 CCM DCM BCM 概论 2 1 PWM PFM PSM三种控制方法的优缺点 2 2 DCDC BUCK各种模式 2 3 C
  • 使用easypoi模板方法导出excel

    系列文章目录 一 Java使用Apache POI导出excel 二 Apache POI 操作Excel常用方法 三 Apache poi 拆分单元格并赋值 四 使用easypoi模板方法导出excel 五 Apache poi给exce
  • Dynamics 365 多选字段

    Dynamics 365 多选字段 数据库操作 C 后台操作 JS 扩展 JS string 转 int数组 数据库操作 update tablebase set field 1 对应选项值多个逗号隔开 1 C 后台操作
  • Testng学习笔记

    TestNG设计涵盖所有类型的测试 单元 功能 端到端 集成等 它需要JDK5或更高的JDK版本 TestNG是一个开源自动化测试框架 其灵感来自JUnit和NUnit的 TestNG环境设置 配置安装 TestNG是一个Java的框架 所
  • 在浏览器地址栏输入一个网址,从敲下回车键,到页面完全加载完毕,中间都发生了什么?

    1 如果地址栏中输入的是一个域名 浏览器会先使用自己的DNS缓存进行域名解析 转为IP地址 如果缓存中不存在 则会请求使用上层DNS 操作系统的DNS 操作系统会先查询本地HOST文件 如果HOST文件中不存在则会使用网络设置的DNS进行域
  • 关于 Q值

    先从大的方面来讲 从系统 从能量的角度来讲 Q值 描述任何可储能器件的性能 比如LC振荡回路 激光谐振腔 FP标准具 即Q 系统内能量 损耗功率 可见 Q值是储能器件受 振 荡驱动力和阻尼力的矛盾作用的结果 Q值越高 表示阻尼越小 当Q值
  • unity ugui序列帧动画

    使用unity自带的动画功能 1 使用unity自带的动画功能 2 在脚本中不停切换一个UI的图片以实现动画效果 1 使用unity自带的动画功能 2 在脚本中不停切换一个UI的图片以实现动画效果 using UnityEngine usi