Как показать сообщение Toast в Unity, похожее на сообщение в Android? - PullRequest
0 голосов
/ 01 октября 2018

Есть ли что-то вроде сообщения Toast в Unity , которое похоже на android, кроме GUI. В android это было легко с помощью однострочного кода.

public void buttonclick()
{
// Message to show
}

Ответы [ 4 ]

0 голосов
/ 18 декабря 2018
public void activa_la_co_derum()
    {
        StartCoroutine("desactiva_el_radar_un_momento");
    }

    IEnumerator desactiva_el_radar_un_momento()
    {
        obj_dc.GetComponentInChildren<Text>().enabled = true;
        yield return new WaitForSeconds(1);
        obj_dc.GetComponentInChildren<Text>().enabled = false;
        yield return new WaitForSeconds(1);
        obj_dc.GetComponentInChildren<Text>().enabled = true;
        yield return new WaitForSeconds(1);
        obj_dc.GetComponentInChildren<Text>().enabled = false;
        //geimcaja_a.transform.position = new Vector3(4.57f, 0.5f, -1.34f); geimcaja_a.transform.position = new Vector3(4.57f, 0.5f, -1.34f);

        //yield return new WaitForSeconds(1);
        //Rompecabeza_triguer = false;

    }
0 голосов
/ 01 октября 2018

Вы можете сделать это с компонентом Text и функцией Mathf.Lerp, переведя текст в цвет Color.clear, подождав некоторое время, затем исчезнув и исчезнув.Этот пост описывает, как это сделать с помощью простой fadeInAndOut функции.Перед затенением текста получите исходный цвет текста, затем включите компонент «Текст».После затухания восстановите цвет, затем отключите компонент «Текст».

Вот упрощенный тост с компонентом Текст:

void Start()
{
    showToast("Hello", 2);
}

public Text txt;

void showToast(string text,
    int duration)
{
    StartCoroutine(showToastCOR(text, duration));
}

private IEnumerator showToastCOR(string text,
    int duration)
{
    Color orginalColor = txt.color;

    txt.text = text;
    txt.enabled = true;

    //Fade in
    yield return fadeInAndOut(txt, true, 0.5f);

    //Wait for the duration
    float counter = 0;
    while (counter < duration)
    {
        counter += Time.deltaTime;
        yield return null;
    }

    //Fade out
    yield return fadeInAndOut(txt, false, 0.5f);

    txt.enabled = false;
    txt.color = orginalColor;
}

IEnumerator fadeInAndOut(Text targetText, bool fadeIn, float duration)
{
    //Set Values depending on if fadeIn or fadeOut
    float a, b;
    if (fadeIn)
    {
        a = 0f;
        b = 1f;
    }
    else
    {
        a = 1f;
        b = 0f;
    }

    Color currentColor = Color.clear;
    float counter = 0f;

    while (counter < duration)
    {
        counter += Time.deltaTime;
        float alpha = Mathf.Lerp(a, b, counter / duration);

        targetText.color = new Color(currentColor.r, currentColor.g, currentColor.b, alpha);
        yield return null;
    }
}
0 голосов
/ 10 октября 2018

После просмотра ответа @Programmer я получил простое представление о том, как отображать текст. Я использую ту же кнопку, чтобы показать и скрыть текст.Если вы не хотите использовать кнопку, удалите btnShowHide и используйте функцию Show () с invoke и выключите ее через несколько секунд.

public class Toast : MonoBehaviour {

public Button btnShowHide;
public Text txt;
// Use this for initialization
void Start()
{ 
    //Text to be shown
    txt.enabled = false;

 //If using a button with name "Show"
 btnShowHide.GetComponentInChildren<Text>().text = "Show";

}


//Button click function

public  void Show()
{
    if (txt.isActiveAndEnabled)
    {
        txt.enabled = false;
        btnShowHide.GetComponentInChildren<Text>().text = "Show";
    }
    else
    {
        txt.enabled = true;
        btnShowHide.GetComponentInChildren<Text>().text = "Hide";
    }

}


}
0 голосов
/ 01 октября 2018

Вы можете использовать: SSTools.Message ().

Я нашел руководство по скорости на YouTube

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