Unity经验条滚动增加特效效果脚本 for NGUI

经验值进度叠加升级效果。例:假如我从 1级升到 10级。并且十级经验还有多。那么。播放次数为 10 ,溢出值为  (当前经验/当前等级需要经验  )

Label为进度条上数值。在滚动时对他进行了隐藏。播放完后显示。

基于NGUI的UISlider进度条。如果没用NGUI也可以改成你自己的相应组件。都是个简单的小脚本。

NGUI经验条滚动进度效果

脚本如下.

using UnityEngine;
using System.Collections;
/// <summary>
/// 作用:播放经验条动画效果
/// 代码:小宝
/// 最后修改:2014年11月17日 15:00:55
/// </summary>
public class TweenProgressSprite : MonoBehaviour 
{
    /// <summary>
    /// 循环播放次数
    /// </summary>
    public int playNums;
    /// <summary> 最后溢出百分比 </summary>
    public float overflow;
    private UISlider mUIslider;
    public UILabel label;

    /// <summary>
    /// 播放经验条动画
    /// </summary>
    /// <param name="nums">播放次数,包括有溢出次数</param>
    /// <param name="overflow">最后溢出剩余百分比 (0.5f)</param>
    public void Play(int nums,float overflow)
    {
        label.gameObject.SetActive(false);
        this.playNums = nums;
        this.overflow = overflow;
        mUIslider = this.gameObject.GetComponent<UISlider>();
        InvokeRepeating("OnSecondFunction", 0.0f, 0.05f);
    }
    /// <summary>
    /// 结束经验条播放动画
    /// </summary>
    public void OverPlay()
    {
        label.gameObject.SetActive(true);
        if (mUIslider == null) mUIslider = this.gameObject.GetComponent<UISlider>();
        mUIslider.value = overflow;
    }

    void OnSecondFunction()
    {
        if (playNums > 0)
        {
            if (playNums == 1)
            {
                if (mUIslider.value < overflow) mUIslider.value += 0.07f;
                else playNums--;
            }
            else
            {
                if (mUIslider.value < 1) mUIslider.value += 0.07f;
                else
                {
                    playNums--;
                    mUIslider.value = 0;
                }
            }
        }
        else { CancelInvoke("OnSecondFunction"); OverPlay(); }
    }
}

 

本文链接:

https://www.bobsong.net/396.html
1 + 5 =
1 评论
    2015年10月28日 回复

    有一个bug if (playNums == 1)

            {
                if (mUIslider.value &lt; overflow)  这里应该改为1 而不是溢出值

    mUIslider.value += 0.07f;

                else playNums--;
            }