📜  unity 更改透明度脚本 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:20:53.122000             🧑  作者: Mango

Unity 更改透明度脚本 - C# 编程语言

在 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());
参考链接