【问题标题】:UNITY - Make a gameobject inactive and activeUNITY - 使游戏对象处于非活动状态和活动状态
【发布时间】:2018-11-26 23:59:54
【问题描述】:

我有游戏对象,它是按钮(称为图块),当单击按钮时,它将处于非活动状态,并且有一个条件要测试,如果条件为真,则按钮将被销毁,但如果为假,则按钮将返回到它的活动状态。

我的游戏管理器脚本(条件):

public void checkword()
 {
     wordBuilded = displayer.text.ToString();

     if (txtContents.Contains(wordBuilded))
     {
         Debug.Log(wordBuilded + " Is on the list");
         wordScore++;
         Debug.Log(wordScore);
     }
     else
     {        
         Debug.Log("Someting is wrong..");
         FindObjectOfType<LetterTiles>().tileStatus();
     }

 }

在我的按钮(平铺)脚本上(附加到按钮的脚本):

public void letterClick()
 {
     gameManager.currentWord += letter;
     gameObject.SetActive(false);

 }

 public void tileStatus()
 {
    gameObject.SetActive(true);
 }

【问题讨论】:

  • 你没有提到问题是什么
  • 我希望按钮对象在条件为假时重新出现

标签: c# visual-studio unity3d button


【解决方案1】:

当一个对象被停用时,Unity 不会使用 FindObjectOfType 找到它。

在禁用它之前在游戏管理器中保留对对象 [按钮] 的本地引用,或者以其他方式隐藏按钮。

由于您使用的是按钮,因此您可以使用按钮的interactable 属性将其禁用[如果您希望将其隐藏,则将禁用的颜色更改为透明],例如:

gameobject.GetComponent&lt;Button&gt;().interactable = false;

【讨论】:

  • 感谢您的回答,但如果我为该对象使用数组,我将如何放置该对象的本地引用?
  • 遍历数组并与名称进行比较并将其放置在本地,也可以通过许多其他方式保存。
  • @MunggoLloyd 如果您在游戏开始时准备好对象,您可以找到所有LetterTiles 类型的对象并将它们保存在一个列表中。我会使用可交互的技巧而不是停用按钮。如果您仍然需要再次停用游戏对象评论,我将编辑我的答案以包括如何进行采样。
  • 嗨@Jimmar 我已经修复了它,使用Interactable 并改变颜色,正如你所说,非常感谢你帮助我。但是我有一个新问题,也许你能帮帮我? stackoverflow.com/questions/53516024/…
猜你喜欢
  • 2022-01-22
  • 2017-11-14
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多