是否有任何解决方案在统一的更新功能中初始化变量?

时间:2018-05-14 07:38:42

标签: c# unity3d

这是我第一次通过Unity制作简单的2D游戏,我遇到了问题。 我想逐步淡出和淡出文本。

using System.Collections;    
using System.Collections.Generic;    
using UnityEngine;    
using UnityEngine.UI;    

public class StageSet : MonoBehaviour
{
    Text stage;
    Created c = new Created();           //script of level was made already
    float time = 0;
    float fades = 0;
    float fadex = 1;

    void Update ()
    {
        stage = GetComponent<Text>();
        stage.text = "Stage " + c.getLevel();
        time += Time.deltaTime;

        if (time > 2 && time<=3.0f && c.getLevel()==1)
            Fadein();
        if (time > 3.0f && time < 5 && c.getLevel()==1)
            Fadeout();
    }

    void Fadein()
    {
        if (fades < 1)
        {
            fades += 0.1f;
            stage.color = new Color(255, 0, 0, fades);
        }
    }

    void Fadeout()
    {
        if(fadex > 0)
        {
            fadex -= 0.1f;
            stage.color = new Color(255, 0, 0, fadex);  
        }
    }
}  

它立即起作用了,但由于更新功能,我无法再实现Fadein和Fadeout的功能。在使用Fadein和Fadeout函数后,是否有任何初始化变量fades和fadex的解决方案?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

void Fadein()
{
 if (fades < 1)
 {
    fades += 0.1f;
    stage.color = new Color(255, 0, 0, fades);
    fadex = fades;
 }
}

void Fadeout()
{
 if(fadex > 0)
 {
    fadex -= 0.1f;
    stage.color = new Color(255, 0, 0, fadex);  
    fades = fadex
 }
}

但是当然有更多的方法可以做到这一点,一种方法是使两个淡入和淡出Ienumerator方法,然后在Co-routines上运行它们,而不是在Update()上运行。