Возможно ли добавить одному GameObject несколько тегов?

Могу я добавить одному и тому же объекту 2 или 3 тега, типа Player и другие?


Ответы (2 шт):

Автор решения: Герман Покровский

Нет, но вы можете создать новый тег, для себя

→ Ссылка
Автор решения: Арман

Добавить несколько нельзя. Но есть такие варианты:


Проблема

К примеру мне нужно сортировать воинов в своём игре по тегам

  • Ближний бой - CloseFighter
  • Дальний бой - DistantFighter
  • Новичок - Newbie
  • Опытный - Experienced
  • Легенда - Legend
  • Мужской - Male
  • Женский - Female

Допустим есть некий герой который Опытный, Женского пола и владеет луком, то есть Дальний бой.


Решение 1

Соединим всё это в 1 строку, именно это строка будет у неё тег: DistantFighter_Experienced_Female.
Теперь вы можете спокойно взять её тег, разделить по символу _ и сортировать.


Решение 2

Создать абсолютно новый скрипт (к примеру Tags.cs) для фильтрации. Пример:

  • Tags.cs
public class Tags: MonoBehaviour
{
    public string[] TagsList;
}
  • Скрипт фильтрации
[SerializedField] private GameObject[] _ObjectsToFilter; //Все объекты для фильтрации с скриптом Tags.cs

private void Start()
{
    foreach(GameObject _Object in _ObjectsToFilter) //Берём каждый объект
    {
        string[] _Tags = _Object.GetComponent<Tags>().TagsList; //Получаем список тегов каждого объекта
        foreach(string _Tag in _Tags) //Берём каждый тег
        {
            if(_Tag == "CloseFighter") //И проверяем
            {
                Debug.Log($"Боец {_Object.name} хорош в ближнем бою.");
            }
            else if(_Tag == "DistantFighter")
            {
                Debug.Log($"Боец {_Object.name} хорош в дальнем бою.");
            }
            else
            {
                Debug.Log($"{_Object.name} бракованный боец. Несите нового.")
            }
        }

        ...
    }
}
→ Ссылка