Как изменить тег unity

Киньте код, как можно сменить имя и тег объекта на выбранный, через другой скрипт

Смена имени и тега у объекта

Смена имени и тега у объекта

Киньте код, как можно сменить имя и тег объекта на выбранный, через другой скрипт

Reynold1
UNIт
 
Сообщения: 54
Зарегистрирован: 17 июн 2013, 16:24

Re: Смена имени и тега у объекта

Сообщение Reynold1 22 июн 2013, 17:17

Есть три объекта:
1. Player с тегом Player
2. Bot с тегом Bot
3. Bot с тегом Bot

Когда я удаляю объект Player со сцены, нужно сменить у первого бота имя и тег на Player. потом должно быть так все по кругу, когда очередной player уничтожается, то bot переименовывается на player

Reynold1
UNIт
 
Сообщения: 54
Зарегистрирован: 17 июн 2013, 16:24

Re: Смена имени и тега у объекта

Сообщение Reynold1 22 июн 2013, 18:37

хелп

Reynold1
UNIт
 
Сообщения: 54
Зарегистрирован: 17 июн 2013, 16:24

Re: Смена имени и тега у объекта

Сообщение Reynold1 22 июн 2013, 19:58

ну помогите
Не апать! seaman

Reynold1
UNIт
 
Сообщения: 54
Зарегистрирован: 17 июн 2013, 16:24

Re: Смена имени и тега у объекта

Сообщение Левш@ 22 июн 2013, 21:45

Используется csharp

go.name = newName;
go.tag = newTag;

:D

Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Смена имени и тега у объекта

Сообщение Medveckij 22 июн 2013, 22:32

Искать информацию и думать совершенно не хотите. Легче сидеть и целый день апать. Я бы за подобное банил на недельку вторую.

Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Смена имени и тега у объекта

Сообщение Reynold1 23 июн 2013, 07:18

Medveckij писал(а):Искать информацию и думать совершенно не хотите. Легче сидеть и целый день апать. Я бы за подобное банил на недельку вторую.

я ищу, и попадается вон то, в основном, что дали выше. это не то что нужно.

Reynold1
UNIт
 
Сообщения: 54
Зарегистрирован: 17 июн 2013, 16:24

Re: Смена имени и тега у объекта

Сообщение Medveckij 23 июн 2013, 07:31

О том и речь. Вы или не хотите или не умеете думать. Из того что Левша запостил выше я почему-то знаю как выполнить вашу задачу, а вы нет.

Вам нужен готовый скрипт в котором вы замените теги на свои собственные? Это вы так думаете? Тогда советую не тратить свое время, программирование не для вас.

В случае если появится желание учиться, а не клянчить готовые решения, вот вам справочка:

http://docs.unity3d.com/Documentation/S … tions.html

Вот вам переводчик:

http://www.translate.ru/

Справа кнопка Next. Читаем и жмем на кнопочку. Читаем и вновь жмем на кнопочку.

Поверьте на слово, учитывая ваши знания на сегодняшний день, в справке вы найдете 90% ответов на свои вопросы. Если только захотеть учиться.

Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Смена имени и тега у объекта

Сообщение Reynold1 23 июн 2013, 08:02

Medveckij писал(а):О том и речь. Вы или не хотите или не умеете думать. Из того что Левша запостил выше я почему-то знаю как выполнить вашу задачу, а вы нет.

Вам нужен готовый скрипт в котором вы замените теги на свои собственные? Это вы так думаете? Тогда советую не тратить свое время, программирование не для вас.

В случае если появится желание учиться, а не клянчить готовые решения, вот вам справочка:

http://docs.unity3d.com/Documentation/S … tions.html

Вот вам переводчик:

http://www.translate.ru/

Справа кнопка Next. Читаем и жмем на кнопочку. Читаем и вновь жмем на кнопочку.

Поверьте на слово, учитывая ваши знания на сегодняшний день, в справке вы найдете 90% ответов на свои вопросы. Если только захотеть учиться.

да я сделал уже. [V] причем до того как дали код. я просто незнаю как закрыть тему.

Reynold1
UNIт
 
Сообщения: 54
Зарегистрирован: 17 июн 2013, 16:24

Re: Смена имени и тега у объекта

Сообщение Zombie47 22 май 2016, 23:02

Зря вы так на парня, я вот загуглил и первое в гугле именно этот пост выдало =)))

Аватара пользователя
Zombie47
UNIт
 
Сообщения: 100
Зарегистрирован: 12 май 2016, 15:19

Re: Смена имени и тега у объекта

Сообщение lawsonilka 22 май 2016, 23:34

Там вроде есть темы по древней.

lawsonilka
UNIверсал
 
Сообщения: 390
Зарегистрирован: 21 окт 2014, 14:48

Re: Смена имени и тега у объекта

Сообщение Cr0c 23 май 2016, 10:08

lawsonilka писал(а):Там вроде есть темы по древней.

Есть, я тоже нечаянно некрофильнулся уже :D
Если тема попалась в гугле и она без решения — почему бы и не написать ответ? Ведь люди будут находить эту тему, читать — помочь не трудно и время им экономит, а форуму только плюс.

Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Смена имени и тега у объекта

Сообщение Zombie47 25 май 2016, 18:35

Так я о том же =))) я до сих пор ищу решение =))) А ссылки в теме битые.

Аватара пользователя
Zombie47
UNIт
 
Сообщения: 100
Зарегистрирован: 12 май 2016, 15:19


Re: Смена имени и тега у объекта

Сообщение Zombie47 25 май 2016, 18:43

все оказалось элементарно gameObject.tag = «name»;

Аватара пользователя
Zombie47
UNIт
 
Сообщения: 100
Зарегистрирован: 12 май 2016, 15:19


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27



Вступление

Тег — это строка, которая может применяться для обозначения типов GameObject . Таким образом, упрощается идентификация определенных объектов GameObject помощью кода.

Тег можно применить к одному или нескольким игровым объектам, но игровой объект всегда будет иметь только один тег. По умолчанию тег «Untagged» используется для представления GameObject , который не был специально помечен.

Создание и применение тегов

Теги обычно применяются через редактор; однако вы также можете применять теги через скрипт. Любой пользовательский тег должен быть создан через окно « Теги и слои» перед тем, как его применить к игровому объекту.


Установка тегов в редакторе

При выборе одного или нескольких игровых объектов вы можете выбрать тег из инспектора. Объекты игры всегда будут иметь один тег; по умолчанию игровые объекты будут помечены как «Без тегов» . Вы также можете перейти в окно « Теги и слои» , выбрав «Добавить тег …» ; однако важно отметить, что это приведет вас только к окну Tags & Layers . Любой тэг создается не будет автоматически применяться к объекту игры.

The tag drop-down menu can be found directly below the game objects name in the Inspector window.


Настройка тегов через скрипт

Вы можете напрямую изменить тег игровых объектов через код. Важно отметить, что вы должны предоставить тег из списка текущих тегов; если вы добавите тег, который еще не был создан, это приведет к ошибке.

Как указано в других примерах, использование серии static string переменных в отличие от ручной записи каждого тега может обеспечить согласованность и надежность.


Следующий сценарий демонстрирует, как мы можем изменить ряд тегов игровых объектов, используя 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 или через скрипт, теги должны быть объявлены через окно Tags & Layers перед использованием. Вы можете получить доступ к этому окну, выбрав «Добавить теги …» в раскрывающемся меню тега игровых объектов. Кроме того, вы можете найти окно в разделе « Редактирование»> «Настройки проекта»> «Метки и слои» .

Tags can contain spaces and punctuation.

Просто выберите кнопку + , введите нужное имя и выберите « Сохранить», чтобы создать тег. При выборе кнопки - удаляется текущий выделенный тег. Обратите внимание, что таким образом тег будет немедленно отображаться как «(Удалено)» и будет полностью удален, когда проект будет перезагружен.

Выбор шестерни / зубца в правом верхнем углу окна позволит вам сбросить все пользовательские параметры. Это немедленно удалит все пользовательские теги вместе с любым настраиваемым слоем, который у вас может быть в разделе «Сортировка слоев» и «Слои» .

Поиск GameObjects по тегу:

Метки делают его особенно удобным для определения определенных игровых объектов. Мы можем искать один игровой объект или искать несколько.


Поиск единого GameObject

Мы можем использовать статическую функцию GameObject.FindGameObjectWithTag(string tag) для поиска отдельных игровых объектов. Важно отметить, что таким образом игровые объекты не запрашиваются в каком-либо конкретном порядке. Если вы ищете тег, который используется в нескольких игровых объектах в сцене, эта функция не сможет гарантировать, какой игровой объект будет возвращен. Таким образом, более удобно, когда мы знаем, что только один игровой объект использует такой тег или когда нас не беспокоит точный экземпляр GameObject который возвращается.

///<summary>We create a static string to allow us consistency.</summary>
string playerTag = "Player"

///<summary>We can now use the tag to reference our player GameObject.</summary>
GameObject player = GameObject.FindGameObjectWithTag(playerTag);

Поиск массива экземпляров GameObject

Мы можем использовать статическую функцию GameObject.FindGameObjectsWithTag(string tag) чтобы искать все игровые объекты, которые используют определенный тег. Это полезно, когда мы хотим итерации через группу определенных игровых объектов. Это также может быть полезно, если мы хотим найти один игровой объект, но можем иметь несколько игровых объектов с использованием одного и того же тега. Поскольку мы не можем гарантировать точный экземпляр , возвращаемый GameObject.FindGameObjectWithTag(string tag) , мы должны вместо этого получить массив всех потенциальных GameObject экземпляров с GameObject.FindGameObjectsWithTag(string tag) , и далее анализировать полученный массив , чтобы найти экземпляр мы находимся находясь в поиске.

///<summary>We create a static string to allow us consistency.</summary>
string enemyTag = "Enemy";

///<summary>We can now use the tag to create an array of all enemy GameObjects.</summary>
GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag );

// We can now freely iterate through our array of enemies
foreach(GameObject enemy in enemies)
{
    // Do something to each enemy (link up a reference, check for damage, etc.)
}

Сравнение тегов

При сравнении двух GameObjects по тегам следует отметить, что следующее приведет к сбоям в работе сборщика мусора, поскольку строка создается каждый раз:

if (go.Tag == "myTag")
{ 
    //Stuff 
}

При выполнении этих сравнений внутри Update () и другого обратного вызова обычного или единственного Unity вы должны использовать этот метод без кучи:

if (go.CompareTag("myTag")
{ 
    //Stuff 
}

Кроме того, ваши теги проще хранить в статическом классе.

public static class Tags
{
    public const string Player = "Player";
    public const string MyCustomTag = "MyCustomTag";
}

Тогда вы можете безопасно сравнивать

if (go.CompareTag(Tags.MyCustomTag)
{ 
    //Stuff 
}

таким образом, ваши строки тегов генерируются во время компиляции, и вы ограничиваете последствия орфографических ошибок.


Так же, как сохранение тегов в статическом классе, можно также сохранить его в перечислении:

public enum Tags
{
    Player, Ennemies, MyCustomTag;
}

и затем вы можете сравнить его с помощью метода enum toString() :

if (go.CompareTag(Tags.MyCustomTag.toString())
{ 
    //Stuff 
}

Introduction

A tag is a string that can be applied to mark GameObject types. In this way, it makes it easier to identify particular GameObject objects via code.

A tag can be applied to one or more game objects, but a game object will always only have one tag. By default, the tag «Untagged» is used to represent a GameObject that has not been intentionally tagged.

Tags are typically applied via the editor; however, you can also apply tags via script. Any custom tag must be created via the Tags & Layers window before being applied to a game object.


Setting Tags in the Editor

With one or more game objects selected, you can select a tag from the inspector. Game objects will always carry a single tag; by default, game objects will be tagged as «Untagged». You can also move to the Tags & Layers window, by selecting «Add Tag…»; however, it is important to note that this only takes you to the Tags & Layers window. Any tag you create will not automatically apply to the game object.

The tag drop-down menu can be found directly below the game objects name in the Inspector window.


Setting Tags via Script

You can directly change a game objects tag via code. It is important to note that you must provide a tag from the list of current tags; if you supply a tag that has not already been created, this will result in an error.

As detailed in other examples, using a series of static string variables as opposed to manually writing each tag can ensure consistency and reliability.


The following script demonstrates how we might change a series of game objects tags, using static string references to ensure consistency. Note the assumption that each static string represents a tag that has already been created in the Tags & Layers window.

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;
        }
    }
}

Creating Custom Tags

Regardless of whether you set tags via the Inspector, or via script, tags must be declared via the Tags & Layers window before use. You can access this window by selecting «Add Tags…» from a game objects tag drop down menu. Alternatively, you can find the window under Edit > Project Settings > Tags and Layers.

Tags can contain spaces and punctuation.

Simply select the + button, enter the desired name and select Save to create a tag. Selecting the - button will remove the currently highlighted tag. Note that in this manner, the tag will be immediately displayed as «(Removed)», and will be completely removed when the project is next reloaded.

Selecting the gear/cog from the top right of the window will allow you to reset all custom options. This will immediately remove all custom tags, along with any custom layer you may have under «Sorting Layers» and «Layers».

Finding GameObjects by Tag:

Tags make it particularly easy to locate specific game objects. We can look for a single game object, or look for multiple.


Finding a Single GameObject

We can use the static function GameObject.FindGameObjectWithTag(string tag) to look for individual game objects. It is important to note that, in this way, game objects are not queried in any particular order. If you search for a tag that is used on multiple game objects in the scene, this function will not be able to guarantee which game object is returned. As such, it is more appropriate when we know that only one game object uses such tag, or when we are not worried about the exact instance of GameObject that is returned.

///<summary>We create a static string to allow us consistency.</summary>
string playerTag = "Player"

///<summary>We can now use the tag to reference our player GameObject.</summary>
GameObject player = GameObject.FindGameObjectWithTag(playerTag);

Finding an Array of GameObject instances

We can use the static function GameObject.FindGameObjectsWithTag(string tag) to look for all game objects that use a particular tag. This is useful when we want iterate through a group of particular game objects. This can also be useful if we want to find a single game object, but may have multiple game objects using the same tag. As we can not guarantee the exact instance returned by GameObject.FindGameObjectWithTag(string tag), we must instead retrieve an array of all potential GameObject instances with GameObject.FindGameObjectsWithTag(string tag), and further analyse the resulting array to find the instance we are looking for.

///<summary>We create a static string to allow us consistency.</summary>
string enemyTag = "Enemy";

///<summary>We can now use the tag to create an array of all enemy GameObjects.</summary>
GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag );

// We can now freely iterate through our array of enemies
foreach(GameObject enemy in enemies)
{
    // Do something to each enemy (link up a reference, check for damage, etc.)
}

When comparing two GameObjects by Tags, it should be noted that the following would cause Garbage Collector overhead as a string is created everytime:

if (go.Tag == "myTag")
{ 
    //Stuff 
}

When performing those comparisons inside Update() and other regular Unity’s callback (or a loop), you should use this heap allocation-free method:

if (go.CompareTag("myTag")
{ 
    //Stuff 
}

Additionally it’s easier to keep your tags in a static class.

public static class Tags
{
    public const string Player = "Player";
    public const string MyCustomTag = "MyCustomTag";
}

Then you can compare safely

if (go.CompareTag(Tags.MyCustomTag)
{ 
    //Stuff 
}

this way, your tag strings are generated at compile time, and you limit the implications of spelling mistakes.


Just like keeping tags into a static class, it is also possible to store it into an enumeration:

public enum Tags
{
    Player, Ennemies, MyCustomTag;
}

and then you can compare it using the enum toString() method:

if (go.CompareTag(Tags.MyCustomTag.toString())
{ 
    //Stuff 
}

Понравилась статья? Поделить с друзьями:
  • Как изменить тег discord
  • Как изменить твою озвучку
  • Как изменить твой цвет
  • Как изменить твой характер
  • Как изменить твой сценарий