c# - 检查对象是否处于事件状态.Unity

标签 c# unity3d

我想检查对象是否处于事件状态,如果是,我想停用其他对象。这是我的方法。它不是最好的,但我只是想让它工作。我的这个方法不能正常工作,因为即使我在 update() 中有它,它也只运行一次。这里需要一些帮助...

更新:问题是,当我选择该选择时,该选择变为真,并且由于另一个选择已经为真,此代码无法正常工作,现在我不知道如何修复它。

public GameObject selectionTop, selectionBot, selectionSplash, selectionFloor;

private void Update() => Check();
public void Check() 
{
    if (selectionTop.activeSelf) 
    {
        selectionBot.SetActive(false);
        selectionSplash.SetActive(false);
        selectionFloor.SetActive(false);
    }
    else if (selectionBot.activeSelf) 
    {
        selectionTop.SetActive(false);
        selectionSplash.SetActive(false);
        selectionFloor.SetActive(false);
    }
    else if (selectionSplash.activeSelf) 
    {
        selectionTop.SetActive(false);
        selectionBot.SetActive(false);
        selectionFloor.SetActive(false);
    }
    else if (selectionFloor.activeSelf) 
    {
        selectionTop.SetActive(false);
        selectionBot.SetActive(false);
        selectionSplash.SetActive(false);
    }
}

最佳答案

仅当其脚本所在的 GameObject 处于 activeInHierarchy 且脚本已启用时,才会调用更新。我的猜测是您在其中一个被禁用的 GameObject 上安装了此脚本,这导致无法调用更新。

所以我会将此脚本移动到另一个未使用“选择”游戏对象之一的游戏对象,以便始终调用更新。

关于c# - 检查对象是否处于事件状态.Unity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30310414/

相关文章:

c# - 如何在 Unity android 项目中制作自定义 firebase 事件?

c# - 在开始新的之前取消音频剪辑?

android - Gradle(Android Studio)不会生成jar文件

c# - .NET Core 的枚举反射

c# - 丢弃 DoAwait() VS Task.Run(() => DoAwait()) 有什么区别

c# - 在 C# 中使用 lambda 的 Enumerable.Select 的 Java 等价物是什么?

c# - 将 Unity App 连接到 mySQL 数据库

c# - C#接口(interface)和继承的问题

c# - 使用 C# 操作 SQL Server

c# - 正则表达式拆分包含标记的文本