Возможно ли добавить одному 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} бракованный боец. Несите нового.")
}
}
...
}
}