NGUI|如何做出用鼠标滚动切换武器的效果

来源:互联网 发布:如何查本机mac地址 编辑:程序博客网 时间:2024/05/29 11:34

U3d新手一个,在此写博客记录自己做游戏的过程,希望对自己和其他人有所帮助,此代码基本上是班上大神帮忙写的,我还是个渣,相信有一天也能变成大神拯救世界↖(^ω^)↗


说明:此代码只为实现游戏界面上武器栏切换武器,用到的武器标识会变大并透明度减少,需用到NGUI

如图效果黑板擦是正在使用的


首先用ngui添加武器 图片,给每个武器图片添加动画效果组件,我这里使用的放大缩小,和透明度的变化



然后将武器图片拖到下图中数组Guns Alpha和Guns Scale里,下图中的gun1,gun2,gun3


Change Gun的代码如下:


using UnityEngine;

using System.Collections;

public class ChangeGun : MonoBehaviour
{


public TweenAlpha[] gunsAlpha;//透明度动画效果的数组

public TweenScale[] gunsScale;//放大缩小动画效果的数组
private int currentIndex = 0; //目前的武器序号
private bool isChange = true;
// Use this for initialization
void Start()
{
gunsScale[0].PlayForward();向前播放动画
gunsAlpha[0].PlayReverse();向后播放动画
}

// Update is called once per frame
void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") > 0)//鼠标向上滚动
{
ChangeDown();
}
else if (Input.GetAxis("Mouse ScrollWheel") < 0)
{


ChangeUp();
}

}


void ChangeDown()
{

for (int i = currentIndex; i >0; i--)
{
if (isChange)
{

if (i == 0)//如果是第一个武器就返回
{
return;
}
currentIndex = i -1;//目前武器序号减1
gunsScale[i].PlayReverse();//上一个武器向后播放缩小动画
gunsAlpha[i].PlayForward();//上一个武器播放透明度增加动画
gunsScale[currentIndex].PlayForward();//当前武器放大
gunsAlpha[currentIndex].PlayReverse();//当前武器透明度减少
isChange = false;
StartCoroutine(WaitChange());
}
}
}

void ChangeUp()
{
for (int i = currentIndex; i < gunsScale.Length; i++)
{
if (isChange)
{

if (i == gunsScale.Length-1)
{
return;
}

currentIndex = i+1;
gunsScale[i].PlayReverse();
gunsAlpha[i].PlayForward();
gunsScale[currentIndex].PlayForward();
gunsAlpha[currentIndex].PlayReverse();

isChange= false;
StartCoroutine(WaitChange());
}
}

}

IEnumerator WaitChange()
{
yield return new WaitForSeconds(0.5f);//每隔0.5s鼠标变为可用
isChange = true;
}

}

不知道我用不专业的语言说清楚没 ,不懂的可以留言问我

0 0
原创粉丝点击