Unity制作GIF效果

Unity3D不支持GIF格式。

前几天想做一个UI的特效,就是那种呼吸的效果。

之前认识一个技术很厉害的美术,我问他,你的Unity中UI的动态效果是怎么做的?他回答:序列帧动画,PS中的。

本人稍微懂点PS技术,所以听到了也学者做了下我的效果。

但是后来发现序列帧保存后的GIF,Unity不识别。

后来再问美工,他说是用了网上的一个插件代码做的。

而且查询了网上所有相关的代码都没有说纯粹 脱离代码而实现序列帧的。

所以我也试着写了一下,发现效果还行,可以满足当前的需求,也可以复用。

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

public class ChangBackGroundDynamic : MonoBehaviour {
    public List<Sprite> _Pics = new List<Sprite>();                             //替换的图片,是一个图片组
    private Image _SourceImage;                                                 //需要被替换的目标图片
    public bool _IsReverse = false;                                             //是否反转,就是看需不需要出现从头到尾,从尾到头的效果
    public bool _IsAutoPlay = true;                                             //自动播放吗?
    public float _DelayTime = 0;                                                //延时播放时间
    public float _DeltaTime=0.1f;                                               //照片切换间隔
    private int _PicIndex=0;                                                    //照片的编码,就是下标
    private int _PicLength;                                                     //照片组长度


    void Start()
    {
        _SourceImage = this.GetComponent<Image>();                              //目标图片
        _PicLength = _Pics.Count;                                               //图片的长度进行存储
        if (_IsReverse)                                                         //如果需要反转
        {
            for (int i = _PicLength - 1; i >= 0; i--)                           //按照目前的长度,反向存一遍
            {
                _Pics.Add(_Pics[i]);
            }
            _PicLength = _Pics.Count;                                           //重新设置长度
        }
        if (_IsAutoPlay)                                                         //是自动播放吗?
            InvokeRepeating("ChangeBackGround", _DelayTime, _DeltaTime);         //调用切换代码,输入延时时间与间隔时间
    }
    /// <summary>
    /// 修改背景方法
    /// </summary>
    void ChangeBackGround()
    {
        if (_PicIndex >= _PicLength)                                                //如果下标溢出
            _PicIndex = 0;                                                          //下标清零
        _SourceImage.sprite = _Pics[_PicIndex];                                     //修改背景
        _PicIndex++;                                                                //下标自加1
    }

当然还需要供外部类调用的开始播放方法和停止播放方法。

就不一一写出。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值