NGUI系列教程 第六部

Unity-基于NGUI下的序列帧动画代码实现 该方法主要是基于NGUI下利用UISprite实现 阅读详情

转自:http://blog.youkuaiyun.com/jbjwpzyl3611421/article/details/10593675

今天我给大家讲一下如何使用NGUI做序列帧动画。本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画。废话不说了,下面开始。
还要在啰嗦一句,首先大家要准备一些序列帧的素材图片,最好是大图和小图各一套。我们先来将使用UISpirit做序列帧动画,这个方法只适合使用小图。
在使用UISpirit 之前大家还要把准备好的序列帧图片做成Atlas,如何做Atlas,大家可以参考系列教程四,这里就不多说了。建好自己的Atlas之后就可以开始着手做了。废话终于完了。

1. 老规矩,新建一个场景,新建一个2D UI ,在Panel节点下新建一个UISpirit,图片选择序列帧的第一帧图片。

2.如何让Spirit动态换图片,是我们要解决的重要问题。只要UIspirit能够根据时间动态的换图片就可以做到播放序列帧动画。其实很简单,最重 要的就是UISpirit的Name属性。我们只要能够动态改变UISpirit的SpiritName,就可以实现动态换图的功能。
代码如下

public bool ActivateWait = false;

    float fireRate = 0.2f;
    int i = 0;
    float nextFire;
    string[] ActivatorTexture = new string[] { "activity00", "activity01", "activity02", "activity03", "activity04", "activity05", "activity06", "activity07", "activity08", "activity09", "activity10", "activity11" };            //这里存放我们需要调用的序列帧的名称,这种方法比较笨拙,
//只适合使用图片较少的情况,当图片很多的情况下,我们可以使用代码控制名称,思路是前面的名称一样,后面的名称代表序列帧编号,我们只要
//在代码中根据编号加上前缀名称就可以得到所需序列帧的全名。具体使用参见下面的Texture序列帧动画。
    void Awake()
    {
        this.GetComponent<UISprite>().enabled = false;
    }

    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (ActivateWait)
        {
            this.GetComponent<UISprite>().enabled = true;
            if (i < ActivatorTexture.Length)
            {
                if (Time.time > nextFire)
                {
                    nextFire = Time.time + fireRate;
                     this.GetComponent<UISprite>().spriteName= ActivatorTexture;
                    i++;
                }
            }
            else
            {
                i = 0;
            }
        }
        else
        {
            this.GetComponent<UISprite>().enabled = false;
        }
    }

这里重要的代码其实就只有一句 this.GetComponent<UISprite>().spriteName= ActivatorTexture; 根据i的索引,动态的改变Spirit的名称。
其余的是控制播放序列帧的节奏和是否播放序列帧。如图是我使用此方法做的等待的进度条效果。

3.第二种方法,使用UITexture做序列帧动画。新建一个UITexture,拖放需要做动画的序列帧的第一帧到Texture槽中,关于它的参 数,在以前的系列教程中都已经解释的很清楚了,大家可以参考以前的教程。使用UITexture做序列帧动画的关键在于动态改变它的Texture。关键 代码:UITexture.mainTexture 。

这里说明一点就是使用该方法做序列帧动画之前,需要把所有的序列帧图片放到Resources目录下。我们在运行的时候动态调用需要的Texture。还 有一点需要注意的是,当图片很多的时候,我们还需要动态卸载已经加载的图片资源,避免挤爆内存。使用的方法是 : Resources.UnloadUnusedAssets();

4.有了上面的知识之后,我们就可以动手写出下面的代码了:

void DynamicLoadUnload(int curframe )
    {
        //plane.renderer.material.mainTexture=ani[currentFrame];
        if (curframe < 10)    //这里判断当前帧
        {
            TextureUI.mainTexture = (Texture2D)Resources.Load(SequenceName_Gewei + curframe.ToString(), typeof(Texture2D));
//SequenceName_Gewei 是指序列帧的名称去掉各位数字的名称,比如全名为Texture00,那么这里的参数应该是Texture0。下面还有十位百位,
//依次类推。这里是根据名称加帧索引,获取全名的。
        }
        else if (curframe >= 10 && curframe < 100)
        {
            if (curframe % 50 == 0)
                Resources.UnloadUnusedAssets();

            TextureUI.mainTexture = (Texture2D)Resources.Load(SequenceName_Shiwei + curframe.ToString(), typeof(Texture2D));
        }
        else
        {
            if (curframe % 50 == 0)
                Resources.UnloadUnusedAssets();

            TextureUI.mainTexture = (Texture2D)Resources.Load(SequenceName_Baiwei + curframe.ToString(), typeof(Texture2D));
        }
    }

需要大家跟着自己动手做,自己学,授之以鱼不如授之以渔。大家可以试着自己结合上面的UISpirit的方法先自己写一下看看。这样可以让大家根据学习内容多思考,自己写出的东西才能记得牢固。不要只简单的从网上下载现成的代码用,这样对学习没好处。

unity3D游戏开发十八之NGUI动画 我们先来看下帧动画,顾名思义,就是一帧帧的图片组成的 阅读详情

相关推荐

基于NGUI的序列帧动画扩展

基于NGUI的序列帧动画制作,在NGUI的基础上来扩展的序列帧操作。只限于学习参考。任何版权在NGUI团队

NGUI系列教程六(序列帧动画)

今天我给大家讲一下如何使用NGUI做序列帧动画。本节主要包括两方面内容,分别是使用UIspirit和使用UITexture 做序列帧动画。废话不说了,下面开始。 还要在啰嗦一句,首先大家要准备一些序列帧的素材图片,最好是大图和小图各一套。我们先来将使用UISpirit做序列帧动画,这个方法只适合使用小图。 在使用UISpirit 之前大家还要把准备好的序列帧图片做成Atlas,如何做Atlas

秋风扶柳笛的专栏 1万+

unity强大的精灵动画系统(基于NGUI的扩展)

这是一套unity中强大的精灵动画系统(基于NGUI的扩展),直接使用NGUI图集方式,有独有的动画编辑系统,高效并快捷的编辑精灵动画,十分的强大。

Unity中基于NGUI插件制作序列帧动画

我们不仅可以用unity开发3D游戏,还可以开发2D类游戏,在2D游戏中动画的制作是必不可少的一个内容,我们知道在unity可以用Animation来制作游戏的动画,但是那样拖拽感觉效率不高,出错的几率很大,所以我们通过代码来实现其功能。     1:我们首先将需要制作动画的素材导入到项目工程中,为了避免混乱,将一个动画的素材放在一个文件夹下,并将这些图片的格式改为           2:

caojianhua1993的博客 4487

Unity3D制作序列帧动画的方法

当我们需要制作动态炫酷科技感很强的UI时,美术一般会给我们提供一些序列图,这时候我们只需在程序里实现序列动画。 一.动画机 unity自带的帧动画机很方便,我们首先选择所要播放序列帧动画的Image,然后在Window下选择Animation,会弹出一个动画制动的界面,我们选择Create,然后进入如下界面: 我们按照如下添加动画控制的属性, 然后将我们美术给我们的序列图(要设置成2DandUI模式哦)拖入到动画帧面板里。 Unity自带的动画机播放序列帧动画很简单也很方便,但是有一定的局限性。因为我们不能很方便的控制动画的进程以及一些我们的要求。(虽然也可以,但是还是需要写代码,然后还

ISP图像处理Verilog仿真框架搭建(附代码)

基于Verilog的图像处理仿真框架搭建

路漫漫其修远兮,吾将上下而求索 1896

unity中制作序列帧动画

在上一篇中我介绍了用NGUI来实现序列帧动画,这一节我们用unity中的Texture来制作序列帧动画。   首先我们将图片导入到工程中, 这里是所有素材都在一张图片上,我们通过切割来实现动画,然后将图片的格式设置为Texture;将这个图片挂载在有Renderer的物体上,我们是通过修改来实现 public class AnimationController : MonoBehav

caojianhua1993的博客 7325

EtherCAT同步模式实战:如何用TwinCAT配置DC-Synchronous模式(附时序图详解)

本文详细解析了如何在TwinCAT环境中配置EtherCAT的DC-Synchronous同步模式,实现纳秒级同步精度。通过硬件准备、参数配置和高级调优步骤,帮助工程师解决工业自动化中的同步挑战,提升运动控制性能。

gold的博客 1571

NGUI 播放序列帧特效

脚本:public class SkillButtonAnim : MonoBehaviour {    /*     * 播放序列帧     *      */    public UIAtlas atlas;    public bool PlayAnim = false;    [Range(0,0.1f)]    public float fireRate = 0.1f;    int i...

sally7²⁰²¹ 399

iOS自动化之打包-xcodebuild命令行打包.app并安装到ios模拟器

xcode xcodebuild xcrun ios模拟器 iOS UI自动化测试 ios自动打包安装到ios模拟器

z12347891的博客 5074

基因家族Motif 分析

MEME

hgz2020的博客 6317

UnityNGUI序列帧动画代码

在NGUI里面经常用到UISprite打包图片,在这个图集上的图片可以制作序列帧动画,代码如下 using UnityEngine; using System.Collections; using System.Collections.Generic; public class SequenceFrame : MonoBehaviour { [Range(0, 0.3f)] p

liang_704959721的专栏 2361

从零到一:树莓派上的YOLO目标检测实战指南

本文详细介绍了如何在树莓派上部署和优化YOLO目标检测模型,从硬件选型到系统配置,再到模型转换与推理优化。通过对比不同树莓派型号的性能差异,提供实用的配置方案和代码示例,帮助开发者快速实现高效的边缘计算视觉系统。特别推荐使用ONNX格式进行模型转换,以提升在树莓派上的推理效率。

weixin_29046035的博客 1063

Unity序列帧动画——Sprite图片集制作UI动画

分享一个十分简单的在Unity中制作UI序列帧动画的方法。只需要将动画中要显示的图片导入Unity,将所有图片的TextureType设置成Sprite格式,然后全选所有图片,拖到场景中,提示要创建动画状态机,可以自定义名字方便查找,然后点击确定。这时可以发现,生成了一个带有SpriteRenderer和Animator的物体。 到这里已完成了大部分工作,接下来,只需要在代码中获取到这个...

Delesgues的博客 1万+

《涨知识啦29》-DBR的工作原理及其在VCSEL中的作用

分布式布拉格(Distributed Bragg Reflection,简称DBR)反射镜是垂直腔面发射激光器(Vertical-Cavity Surface-Emitting Laser,简称VCSEL)的重要组成部分。典型的DBR反射镜是由1/4ni波长厚度的高折射率和低折射率材料交替组成(ni是该层的折射率)。其反射率取决于组成对数、边界条件以及折射率差。 图1 布拉格反射镜的工作原理 DBR反射镜的工作原理如图1所示。根据反射原理,当光从光疏介质n1射向光密介质n2(折射率n2>n1)时,反

simucal的博客 7983

手把手教你学Simulink实例--使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

MHD0815的博客 298

NGUI中texture序列帧图片播放

using UnityEngine; using System.Collections; public class FullTextureAnim : MonoBehaviour { public int mFPS = 30; public bool loop; public bool mActive = true; public bool isPlayback

chu358177的专栏 1452

YOLOv8改进有效系列目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

Hello,各位读者们好,本专栏自开设两个月以来已经更新改进教程120+余篇其中包含C2f、主干、检测头、注意力机制、Neck多种结构上创新,也有损失函数和一些细节点上的创新,订阅本专栏以后你不仅可以收获跟专栏的阅读权限,同时可以进Qq群,里面包含集成我所有创新的YOLO最新目录,和我本人录制的视频讲解教程,如果你想要在YOLOv8系列收获一篇论文,我相信订阅本专栏后你一定会有所收获~YOLOv8改进有效系列目录。

Snu77的博客 18万+

Unity3d UGUI序列帧动画

这里主要针对Unity3D中2D图片动画进行帧动画播放。

悲欢离合的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

NGUI动画

unity还相当不熟。 之前用tk2d来制作动画,加到场景中后才意识到这个动画应该跟随UI跑,我们用的NGUI。 找到一个简单的制作NGUI的方法: 1. 制作图片集Atlas:Assets->NGUI->Open Atlas Maker。在一个老的Atlas里添加序列动画,或者create一个新的。 2. 从NGUI创建sprite:NGUI->create->Sprite。从刚创建的A

玄奘之家 951

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Unity】 NGUI学习笔记(三)动画及相关功能

UI2D Sprite Animation精灵动画 创建一个简单的精灵动画: 创建精灵要创建Unity 2D Sprite,然后添加UI2D Sprite Animation组件,设置Frames Size,然后将切割好的图片按顺序拖放到Element中,最后通过Framerate调节速度。 ...

一个普普通通的游戏开发者 1049

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

NGUI系统学习笔记1

NGUI显示深度规律: UIPanel和UIRoot是一个级别,depth()相互影响 相同深度的子控件。其他控件都为他俩的子控件。子控件为同一级。相同级别相互影响。UIPanel和UIRoot影响 所有子控件,子控件无法影响UIPanel和UIRoot。假如有两个UIPanel控件Panel1和Panel2,他们下边有 许多子控件。假定Panel2的Depth在Panel

fengya1的专栏 877

NGUI Tweens组件:实现流畅动画的魔法

NGUI Tweens是NGUI框架中的一组用于创建动画效果的工具。"Tween"一词来源于"in-betweening"(中间帧动画),它是一种在两个关键帧之间自动生成中间帧的技术,以实现平滑的过渡效果。

Unity打怪升级 1787

NGUI所见即所得之UITweener

 NGUI所见即所得之UITweener         一直没有用过NGUI动画的功能,之前的理解就是:设置始末两个“位置”,然后就是从起始位置移到结束位置。至于中间是怎么变化的,就感觉很神奇了,变化率怎么设置才不会看起来很“傻”,这里不是看“郭靖”,动画一定要有惊奇,摸不着猜不透的感觉。对NGUI主要的几个脚本都已经有点掌握了(猛点查看),一直都没有去”膜拜“Tweening文件夹的各个...

qiudesuo的专栏 291

Unity3d NGUI的使用(十)(UIPlay Animation制作隐藏显示菜单)

UIPlay Animation可以制作用Unity3d内建的Animation管理器来制作一些隐藏或者可以 显示的菜单,用NGUI的Tween动画也可以实现

Unity3d 攻城师一枚 1万+
上一篇: NGUI系列教程 第五部
下一篇: NGUI系列教程 第七部
我是一纸巾
博客等级 码龄12年 14粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值