//work_changeColor.cs
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class M2NGUIManager : MonoBehaviour
{
//小练习,点击按钮使按钮变换颜色--首先点击按钮变换成红色,然后在变换成黄色,然后变换成蓝色,再点击变成黄色,在点击变成红色,重复这个过程
//需要变换的物体
private GameObject thisButton;
//定义栈
private Stack ColorVar = new Stack();
public Color[] changeColorArray = { Color.red,Color.yellow,Color.blue,Color.green };
//定义UI组件
private UIButton UIButtonVar;
private void Start()
{
thisButton = this.gameObject;
UIButtonVar = thisButton.GetComponent<UIButton>();
//游戏开始默认就已经是红色了
UIButtonVar.defaultColor = Color.red;
}
//正序反序变换颜色
//指定NGUI按钮委托执行这个方法
public void changColor()
{
//颜色变换号
int ColorNum = 0;
//正序反序状态
bool isGO = true;
//正序
if (isGO)
{
switch (ColorNum)
{
case 0:
UIButtonVar.defaultColor = Color.red;
ColorVar.Push(Color.red);
ColorNum++;
break;
case 1:
UIButtonVar.defaultColor = Color.yellow;
ColorVar.Push(Color.yellow);
ColorNum++;
break;
case 2:
UIButtonVar.defaultColor = Color.blue;
ColorNum--;
isGO = false;
break;
}
}
else//反序
{
switch (ColorNum)
{
case 1:
UIButtonVar.defaultColor = (Color)ColorVar.Pop();
ColorNum--;
break;
case 0:
UIButtonVar.defaultColor = (Color)ColorVar.Pop();
ColorVar.Push(Color.red);
ColorNum++;
isGO = true;
break;
}
}
}
//定义颜色变换号1和2-逻辑优化版1
public int colorNum1 = 0;
public int colorNum2 = 1;
//正序反序变换颜色-逻辑优化版
//指定NGUI按钮委托执行这个方法
public void changColor_Optimize1()
{
colorNum1 += colorNum2;
switch (colorNum1)
{
case 0:
UIButtonVar.defaultColor = Color.red;
colorNum2 = 1;
break;
case 1:
UIButtonVar.defaultColor = Color.yellow;
break;
case 2:
UIButtonVar.defaultColor = Color.blue;
colorNum2 = -1;
break;
}
}
public int changeColorArrayIndexNum = 0;
//正序反序变换颜色-逻辑优化版2(更方便的正反序处理变更颜色或者材质)
//指定NGUI按钮委托执行这个方法
public void NGUIOnMouseDown()
{
//重点逻辑语句,取余实现正反序!!
changeColorArrayIndexNum = (changeColorArrayIndexNum+1) % changeColorArray.Length;
//调用更改颜色的方法
changeColor_Optimize2(changeColorArray[changeColorArrayIndexNum]);
if (changeColorArrayIndexNum == changeColorArray.Length-1)
{
//需要先引用using System;
//数组反转
Array.Reverse(changeColorArray);
//反转后需要不重复上次最后的颜色,所以需要加一
changeColorArrayIndexNum++;
}
}
private void changeColor_Optimize2(Color changeColor)
{
UIButtonVar.defaultColor = changeColor;
}
}
|