【问题标题】:How do I get text UI to appear when a condition in another script is met?当满足另一个脚本中的条件时,如何让文本 UI 出现?
【发布时间】:2021-07-28 17:01:24
【问题描述】:

这是我的第一个问题,所以我对“问题礼仪”知之甚少。我正在使用 Visual Studio 在 Unity 中使用 C#。

当另一个脚本满足条件时,我试图让文本出现有点困难。

一个脚本(我们称之为 ManagerScript)附加到一个空的(我们称之为 Manager),它管理一些被摧毁的敌人,计算被摧毁的敌人的数量,一旦这个数字达到 8,我希望文本出现告诉用户他们赢了。

我该怎么做?我在 Canvas 面板上有一些文本 UI(我们称之为对象 WinnerText),但我不知道如何让它只有在玩家获胜后才“激活”。

请不要只给我答案-如果可以的话,请解释原因,这样当玩家输掉比赛时我可以做同样的事情。

提前致谢! 金蝰蛇

【问题讨论】:

  • 每次消灭敌人时->加点->此时检查if(points > neededPoints)然后theUI.SetActive(true);

标签: c# unity3d user-interface


【解决方案1】:

跟踪计数的 ManagerScript 应在修改后检查您的输赢情况,例如:

number++;
if(number > x)
{
// Display Text
}

显示您的文本或其他 ui 元素。您需要直接对游戏对象或组件进行某种引用。由于 ManagerScript 不知道它,因此您需要为其提供要激活/停用的组件/游戏对象的引用。

Unity 提供了多种获取参考的方式。例如,您可以在 ManagerScript 中声明 public GameObject MyUiElement(您也可以只使用您需要的组件,例如“文本”)。如果您声明了公共属性,则“经理”检查器中将出现一个新区域,您可以在其中通过拖放或单击和选择来引用您的对象。

获取所需游戏对象引用的其他方法是使用 GameObject.Find 或类似方法。有关查找的更多信息,请参阅:https://docs.unity3d.com/ScriptReference/GameObject.Find.html

如果你有你的 GameObjects 参考,你可以像这样操作它

number++;
if(number > x)
{
  MyUiElement.SetActive(true/false);
}

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多