仅供参考
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
public class Script : MonoBehaviour
{
public GameObject FadeinButton1;
ColorBlock cb = new ColorBlock();
byte colorAlpha = 0;
float timer = 0f;
private bool canTurnAlpha=false;
void Start()
{
cb.colorMultiplier = 1f;
cb.fadeDuration = 0.1f;
colorAlpha = 0;
timer = 0f; //先设一个计时器,后面方便控制渐显速度
delay = 0f; //用于激活按钮后,延迟一下再渐显
}
void Update()
{
if (canTurnAlpha)
{ if (colorAlpha <= 250) //让按钮渐显,alpha大于250就停止加alpha值
{
delay += Time.deltatime;
if (delay >= 0.7)
{
FadeinButton1.SetActive(true);//提前先让FadeinButton1不激活,到这再激活
}
if (delay >= 2) //开始渐显
{
TurnAlphaMethod(FadeinButton1);
}
}
else
{
canTurnAlpha = false;
}
}
}
public void FadeinButtonCome() //用于触发渐显
{
canTurnAlpha =true; //用于触发update里的内容
}
public void TurnAlphaMethod(GameObject button)
{
timer += Time.deltaTime / 2; //控制渐显的速度
colorAlpha = (byte)(timer * 255);
cb = button.GetComponent<Button>().colors;
cb.normalColor = new Color32(172, 172, 172, colorAlpha);
cb.highlightedColor = new Color32(133, 166, 233, colorAlpha);
button.GetComponent<Button>().colors = cb;
}
}