当满足另一个脚本中的条件时,如何让文本 UI 出现?

Posted

技术标签:

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

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

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

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

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

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

提前致谢! 金蝰蛇

【问题讨论】:

每次消灭敌人时->加点->此时检查if(points > neededPoints)然后theUI.SetActive(true); 【参考方案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);

【讨论】:

以上是关于当满足另一个脚本中的条件时,如何让文本 UI 出现?的主要内容,如果未能解决你的问题,请参考以下文章

如何在鼠标移动时在图片上方显示链接,同时降低图片的不透明度?

以单击另一个单元格为条件突出显示单元格

如果文本被另一个单元格匹配,请使用Google Apps脚本有条理地格式化一个单元格

仅当满足特定条件时,JQuery 才会自动完成

当条件不满足时,while循环退出而不是循环

shell脚本while循环语句