c# - 在 Unity 上让 UI 文本弹出几秒钟

标签 c# user-interface unity3d

我对编码还很陌生,过去一年一直在学习,目前我正在为学校做作业,我无法理解这段代码,这是我一生的挚爱。

我有一个项目,当玩家与之交互时,执行此操作:

void Update ()
{
     if (isPlayerNear && Input.GetKeyDown(KeyCode.E) && Avatar.strenghtAttribute >= 2f)
    {
        levelUp.LevelUp();
        Destroy(gameObject);
    } 

我的升级功能基本上是这样的:

public void LevelUp()
{
     playerLevelText.text = ("You have gained a level!");
     strenghtAttribute++;
     intellectAttribute++;
     playerLevel++;
}

我想弄清楚如何让 playerLevelText.Text 出现在屏幕上,但只出现几秒钟,我不知道如何让它工作。有没有人愿意帮我一把?

最佳答案

您可以将文本设置为空白,或启用/禁用文本对象。我建议为此使用协程。

void Update ()
{
    if (isPlayerNear && Input.GetKeyDown(KeyCode.E) && Avatar.strenghtAttribute >= 2f)
    {
        levelUp.InitializeLevelUp());
        Destroy(gameObject);
    } 

由于您正在销毁调用协程的游戏对象,因此协程将停止。一种解决方法是在您的其他脚本中调用一个普通函数,然后调用协程,这样执行就停留在一个脚本中(可能有更简洁的方法来执行此操作)。

public void InitializeLevelUp()
{
    StartCoroutine(LevelUp());
}
public IEnumerator LevelUp()
{
     playerLevelText.text = ("You have gained a level!");
     strenghtAttribute++;
     intellectAttribute++;
     playerLevel++;
     yield return new WaitForSeconds(2f);
     playerLevelText.text = "";
     //alternatively, set the text object inactive   
}

关于c# - 在 Unity 上让 UI 文本弹出几秒钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362436/

相关文章:

c# - 如何向存储过程声明变量

c# - 如何获取使用 facebook 注册应用程序注册我的网站的 facebook 用户的个人资料照片(不使用 mvc)

C#更新更新应用程序

c# - 如何在鼠标位置生成对象?

c# - 将复杂数据类型从纯 c 插件传递到 Unity C# 脚本

c# - 针对客户不同收费类型的设计模式/架构

java - Swing JTextPane编译错误

user-interface - 有 Win32API 的替代 API 吗?

apache-flex - 富 UI 桌面应用程序采用什么技术?

android - Unity 2019 - 无法启用 MultiDex 支持