返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1829|回复: 0

[原创] 【原创】点击按钮正序反序变换颜色练习

[复制链接]
发表于 2022-11-12 23:03:47 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
//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;
    }


}


游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表