📅  最后修改于: 2023-12-03 15:20:53.122000             🧑  作者: Mango
在 Unity 中,我们经常需要对游戏对象的透明度进行控制,以实现淡入淡出等效果。本文将介绍如何在 C# 脚本中实现更改透明度的功能。
在 Unity 中,透明度是由材质(Material)的颜色(Color)的 alpha 值来控制的。因此,我们只需要在脚本中获取到游戏对象的材质,并更改其颜色的 alpha 值即可。
下面是一个简单的脚本示例,它可以将指定游戏对象的 alpha 值从当前值逐渐变为指定的目标值。其中使用了协程(Coroutine)来实现逐渐变化的效果。
using UnityEngine;
using System.Collections;
public class ChangeTransparency : MonoBehaviour
{
public float targetAlpha = 0.5f; // 目标 alpha 值
public float duration = 1.0f; // 变化时间
private Material mat; // 游戏对象的材质
private float startAlpha; // 开始时的 alpha 值
void Awake()
{
// 获取游戏对象的材质
Renderer renderer = GetComponent<Renderer>();
mat = renderer.material;
// 获取当前的 alpha 值
startAlpha = mat.color.a;
}
void Start()
{
// 开始协程,逐渐变化透明度
StartCoroutine(ChangeAlpha());
}
IEnumerator ChangeAlpha()
{
float elapsed = 0f;
while (elapsed < duration)
{
elapsed += Time.deltaTime;
float ratio = Mathf.Clamp01(elapsed / duration);
// 计算当前的 alpha 值
Color color = mat.color;
color.a = Mathf.Lerp(startAlpha, targetAlpha, ratio);
mat.color = color;
yield return null;
}
}
}
将上述脚本附加到需要更改透明度的游戏对象上,并在 Inspector 视图中设置目标 alpha 值和变化时间即可。也可以在代码中调用 public 方法来修改目标 alpha 值以及开始变化。例如:
ChangeTransparency ct = GetComponent<ChangeTransparency>();
ct.targetAlpha = 0.2f;
ct.StartCoroutine(ChangeAlpha());