在Unity中建立6个cube,把标签改成Cube
再建立一个空物体,把此脚本挂入其中
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeColorByTime : MonoBehaviour
{
private GameObject[] _cubes; //private两个数组 一个是颜色的 一个是Cube的
private Color[] _colors;
void Start()
{
//在颜色数组里给上颜色
_colors = new Color[] { Color.black, Color.blue, Color.green, Color.red, Color.yellow, Color.white };
_cubes = GameObject.FindGameObjectsWithTag("Cube"); //让cube数组找到场景中"Cube"的标签
StartCoroutine("changeColorEnumerator"); //开始启动协同
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Q)) //如果按下Q键 停止协同程序
{
StopCoroutine("changeColorEnumerator");
}
}
IEnumerator changeColorEnumerator() //建立协同程序
{
int j = 0;
while (true)
{
//i==0
for (int i = 0; i < _colors.Length; i++) //变换颜色
{
_cubes[i].GetComponent<MeshRenderer>().material.color = _colors[(i + j) % 6];
}
yield return new WaitForSeconds(3); //每隔3秒变换一次
j++;
if (j >= int.MaxValue - 7) //j++不能超过int范围
{
j = 0;
}
}
}