【问题标题】:How do I check what the tag of the current GameObject is?如何检查当前 GameObject 的标签是什么?
【发布时间】:2016-08-19 06:31:40
【问题描述】:

我正在为我的视频游戏创建关卡选择。我有 10 个按钮,每个按钮都有不同的标签,每个按钮都附有相同的脚本。在附加的脚本中,我想检查该游戏对象的标签是什么,并将其打印在屏幕上。

这是我尝试过的代码-

if (gameObject.tag = "LevelOne") {
        Debug.Log("The tag for this GameObject is" + gameObject.tag);
}

但是我得到一个错误,因为我写的显然是不正确的语法。 如何查看附加的 GameObject 的标签是什么?如果没有,除了我正在尝试做的事情之外,还有什么替代方法? 谢谢 - George :)

【问题讨论】:

    标签: c# unity3d tags


    【解决方案1】:

    比较具有多个= 符号的变量不是一个。当您使用一个= 符号时,您正在将右侧的值分配给左侧的变量。在这种情况下,您的 GameObject 的标签将更改为 LevelOne 而没有 if 语句。

    if (gameObject.tag =="LevelOne")
    {
        Debug.Log("The tag for this GameObject is" + gameObject.tag);
    }
    

    您还可以通过使用CompareTag 函数而不是== 来改进此代码。

    if (gameObject.CompareTag("LevelOne"))
    {
        Debug.Log("The tag for this GameObject is" + gameObject.tag);
    }
    

    编辑:http://answers.unity3d.com/questions/200820/is-comparetag-better-than-gameobjecttag-performanc.html

    【讨论】:

    • 还有一件事,我知道这与我的问题无关,但是当你在这里时,我将如何找到游戏对象的 x 位置? gameObject.transform.position.x; 会起作用吗?
    • 是的,那行得通。记得把它分配给某个东西,否则你会得到一些错误float xPos = gameObject.transform.position.x;
    • 刚刚为 CompareTag 添加了一个链接,以便更快。
    • 如何将 xPos 分配给另一个 GameObject 的 x 位置?我试过exampleGameObjectName.transform.position.x = xPos;,但我收到错误Assets/Scripts/LevelTapScript.cs(21,39): error CS1612: Cannot modify a value type return value of 'UnityEngine.Transform.position'. Consider storing the value in a temporary variable
    • 为什么不创建一个新问题并将您的代码放在那里。我会尽力提供帮助。这个问题越来越长了……
    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多