我对编码还很陌生,过去一年一直在学习,目前我正在为学校做作业,我无法理解这段代码,这是我一生的挚爱。
我有一个项目,当玩家与之交互时,执行此操作:
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/