Unity - 当角色的生命值变低时,如何将屏幕变成红色?

Unity - How do I turn the screen red as my character's health gets low?

所以我正在为学校开发一个 Unity C# 脚本,它应该根据玩家当前的健康状况使屏幕变红,但我遇到了问题。

我有对图像组件的引用(可以在该脚本附加到的游戏对象上找到),并且随着玩家的生命值达到较低水平,alpha 会增加。

这是我已经尝试过的方法:

我想知道是否有人可以告诉我我做错了什么。

    Slider healthSlider;
    Image bloodLossImage;
    float bloodLossAlpha;

    // Use this for initialization
    void Start () {
        bloodLossImage = GetComponent<Image>();
        healthSlider = GetComponentInChildren<Slider>();
        bloodLossAlpha = bloodLossImage.color.a;
    }

    // Update is called once per frame
    void Update () {

        float currentHealth = healthSlider.value;

        if (currentHealth <= 100 && currentHealth >= 76) 
        {
            bloodLossAlpha = 0f;
        } 
        else if (currentHealth <= 75 && currentHealth >= 51) 
        {
            bloodLossAlpha = 47f;
        } 
        else if (currentHealth <= 50 && currentHealth >= 26) 
        {
            bloodLossAlpha = 94f;
        } 
        else
        {
            bloodLossAlpha = 141f;
        }
      }

我无权访问您的场景和您的 currentHealth 变量,但淡入淡出动画对我有用,所以希望这会给您一个好的起点@PierreGravelle。 我的代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour {

// Update is called once per frame
void Update () {
    Color img = gameObject.GetComponent<Image> ().color;
    img.b = Mathf.Lerp (img.b, 0, Time.deltaTime);
    img.g = Mathf.Lerp (img.g, 0, Time.deltaTime);
    gameObject.GetComponent<Image> ().color = img;
    }
}

mathf.lerp 行在 img.b 或 g 和 0 之间插值 Time.DeltaTime。我在 canvas 图像上使用此代码进行测试。您收到的错误是因为您没有 Color 变量,所以它不允许您访问颜色。而不是通过添加 Color img 并在我们做出更改后更新它,我们可以确保颜色会更新。