创建和应用标签

标签通常通过编辑器应用; 但是,你也可以通过脚本应用标签。在应用于游戏对象之前,必须通过“ 标记和图层” 窗口创建任何自定义标记。

在编辑器中设置标签

选择一个或多个游戏对象后,你可以从检查器中选择一个标记。游戏对象总是带有一个标签; 默认情况下,游戏对象将被标记为 未标记 。你也可以通过选择 “添加标签…” 移动到“ 标签和图层” 窗口 ; 但是,请务必注意,这只会将你带到“ 标签和图层” 窗口。你创建的任何标记都不会自动应用于游戏对象。 ** ** **

可以在检查器窗口中的游戏对象名称正下方找到标签下拉菜单。

通过脚本设置标签

你可以通过代码直接更改游戏对象标签。请务必注意,你必须提供当前标记列表中的标记; 如果你提供尚未创建的标记,则会导致错误。

如其他示例中所详述的,使用一系列 static string 变量而不是手动编写每个标签可以确保一致性和可靠性。

以下脚本演示了如何使用 static string 引用更改一系列游戏对象标记以确保一致性。请注意,每个 static string 表示已在“ 标签和图层” 窗口中创建的标签

using UnityEngine;

public class Tagging : MonoBehaviour
{
    static string tagUntagged = "Untagged";
    static string tagPlayer = "Player";
    static string tagEnemy = "Enemy";

    /// <summary>Represents the player character. This game object should 
    /// be linked up via the inspector.</summary>
    public GameObject player;
    /// <summary>Represents all the enemy characters. All enemies should 
    /// be added to the array via the inspector.</summary>
    public GameObject[] enemy;

    void Start ()
    {
        // We ensure that the game object this script is attached to
        // is left untagged by using the default "Untagged" tag.
        gameObject.tag = tagUntagged;

        // We ensure the player has the player tag.
        player.tag = tagUntagged;

        // We loop through the enemy array to ensure they are all tagged.
        for(int i = 0; i < enemy.Length; i++)
        {
            enemy[i].tag = tagEnemy;
        }
    }
}

创建自定义标签

无论你是通过 Inspector 还是通过脚本设置标签,都必须在使用前通过“ 标签和图层” 窗口声明标签。你可以从游戏对象标签下拉菜单中选择 “添加标签…” 来访问此窗口。或者,你可以在“ 编辑”>项目设置>标签和图层 下找到该窗口。

标签可以包含空格和标点符号。

只需选择 + 按钮,输入所需名称并选择 Save 创建标签。选择 - 按钮将删除当前突出显示的标签。请注意,以这种方式,标记将立即显示为 “(已删除)” ,并在下次重新加载项目时将完全删除。

从窗口右上角选择齿轮/齿轮将允许你重置所有自定义选项。这将立即删除所有自定义标记,以及你在 排序图层图层 下可能具有的任何自定义图层