C# unity的update函数中是否有初始化变量的解决方案?

C# unity的update函数中是否有初始化变量的解决方案?,c#,unity3d,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();

这是我第一次用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);  
        }
    }
}  
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类舞台剧集:单一行为
{
文本阶段;
Created c=new Created();//已生成级别为的脚本
浮动时间=0;
浮动淡出=0;
浮动fadex=1;
无效更新()
{
stage=GetComponent();
stage.text=“stage”+c.getLevel();
time+=time.deltaTime;
如果(时间>2&&time 3.0f&&time<5&&c.getLevel()==1)
淡出();
}
void Fadein()
{
如果(淡出<1)
{
衰减+=0.1f;
stage.color=新颜色(255,0,0,淡入淡出);
}
}
无效衰减()
{
如果(fadex>0)
{
fadex-=0.1f;
stage.color=新颜色(255,0,0,fadex);
}
}
}  

它一次按我的意图工作,但由于更新功能,我无法再实现Fadein和Fadeout功能。在我使用Fadein和Fadeout功能后,是否有初始化变量fades和fadex的解决方案?

您可以这样做:

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
 }
}
void Fadein()
{
如果(淡出<1)
{
衰减+=0.1f;
stage.color=新颜色(255,0,0,淡入淡出);
fadex=淡出;
}
}
无效衰减()
{
如果(fadex>0)
{
fadex-=0.1f;
stage.color=新颜色(255,0,0,fadex);
淡出=淡出
}
}

当然,还有更多的方法可以做到这一点,其中一种方法是创建两个淡入淡出Ienumerator方法,然后在共同例程上运行它们,而不是在Update()上运行它们。

“由于更新函数,无法再使用函数Fadein和Fadeout”你能解释一下这意味着什么吗?我不熟悉unity,那么到底是什么问题呢?这意味着我不能再使用Fadein和Fadeout了。为什么你认为重复你上面所说的会有所帮助?什么意思?你有错误吗?有什么意想不到的结果吗?“不能使用”的确切含义是什么?哦,很抱歉,这意味着我在第一次使用后不能再实现Fadein和Fadeout函数,因为当我运行unity项目时,更新函数被逐帧调用,因此初始化变量以使用Fadein和Fadeout时会出现问题“初始化变量时会出现问题”你能说得更准确些吗?我认为你完全可以在更新中使用你的功能。感谢你处理这些问题,并为我的英语技能感到抱歉。欢迎@floweremi:)加入社区。