Как дать уникальный идентификатор экземпляру объекта в Unity C # - PullRequest
0 голосов
/ 04 марта 2019

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

Это для моего интерфейса в главном меню.Я создаю экземпляры кнопок в зависимости от того, сколько спрайтов у меня в папке ресурсов.Мне нужно было, чтобы каждая кнопка меняла скин игрока на другой спрайт, поэтому им нужны были уникальные идентификаторы.

Прикрепил этот скрипт к своему префабу к кнопке:

    public class ShopButtons : MonoBehaviour
{
    public static int[] buttonArray = new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    public static int arIndex = 0;

    public int buttonID;


    void Start()
        {
            if (buttonArray[arIndex] == 0)
            {
                buttonID = arIndex;
                buttonArray[arIndex] = 1;
            }
             arIndex++;
         }
}

Я новичок, поэтому советы приветствуются,Я впервые использую массивы, и это творит чудеса для моего проекта!

1 Ответ

0 голосов
/ 04 марта 2019

Я бы рекомендовал использовать тип Guid.Они гарантированно уникальны и легко создаются для вас.Также, вероятно, было бы лучше установить идентификатор в конструкторе.Например:

public class ShopButtons : MonoBehaviour
{
    public Guid UniqueId { get; }

    public ShopButtons() 
    {
        UniqueId = Guid.NewGuid();
    }

    //etc...
}

Если вы собираетесь использовать эту концепцию для нескольких типов, вы можете даже абстрагировать ее в базовый класс, например:

public abstract class MonoBehaviourWithId : MonoBehaviour
{
    public Guid UniqueId { get; }

    public MonoBehaviourWithId() 
    {
        UniqueId = Guid.NewGuid();
    }
}

, что сделаетВаш ShopButtons класс выглядит намного проще:

public class ShopButtons : MonoBehaviourWithId
{
    //etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...