Есть ли решение для инициализации переменной в функции обновления единицы? - PullRequest
0 голосов
/ 14 мая 2018

Я впервые делаю простую 2D-игру от Unity, и у меня возникла проблема.Я хочу постепенно увеличивать и уменьшать текст постепенно.

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 из-за функции обновления.решение инициализации переменной fades и fadex после того, как я использую функции Fadein и Fadeout?

1 Ответ

0 голосов
/ 14 мая 2018

Ну, вы могли бы сделать что-то вроде этого:

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, а затем запустить их в сопрограммах, а не в Update ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...