更改Unity3D中图像的Alpha值以创建发光效果

时间:2016-10-24 20:29:57

标签: image user-interface animation unity3d

我有两张图片:一张带有发光边框,另一张没有。我想通过淡入淡出发光图像来创建图像发光的效果。我的代码:

private Image lightImage;
private float alpha;

// Use this for initialization
void Start ()
{

lightImage = GetComponent<Image>();
alpha = Time.deltaTime * 10;

}

void FixedUpdate()
{

// fade to transparent over 500ms.
lightImage.CrossFadeAlpha(0.0f, alpha, false);
// and back over 500ms.
lightImage.CrossFadeAlpha(1.0f, alpha, false);
}

我似乎无法让它像我想的那样工作(随着时间的推移缓慢转变。)它快速闪烁,但这不是理想的效果。

1 个答案:

答案 0 :(得分:1)

  1. 替换 alpha = Time.deltaTime * 10; alpha = 0.5f;我 认为您应该将alpha变量重命名为duration
  2. 您无需将CrossFadeAlpha放入FixedUpdate()。它是 一个补间。它不需要跨多个帧执行。 只需将其放入Start()
  3. alpha设置为绝对0不是一个好主意,因为有时, Unity将0个alpha对象视为已禁用,但我不是 当然。如果您遇到此问题,请将alpha设置为非常值 关闭为0(例如0.004f)。
  4. 如果你希望它淡出然后淡入,你应该这样做 像这样:

    IEnumerator Fade() { 
        // fade to transparent over 500ms.
        lightImage.CrossFadeAlpha(0.004f, 0.5f, false);
    
        // Wait for 500ms
        yield return new WaitForSeconds(0.5f); 
    
        // and back over 500ms.
        lightImage.CrossFadeAlpha(1.0f, 0.5f, false);
    }
    
    void Start() {
        StartCoroutine(Fade());
    }