如何在Unity C#中为实例化对象赋予唯一ID

时间:2019-03-04 11:04:44

标签: c# unity3d

我花了很长时间寻找在Unity中为实例化对象赋予唯一ID的最佳方法。我发现了很多方法,但没有一种方法可以用于我正在制作的游戏。 我想出了自己的方式来做,并认为我会分享!

这是在主菜单上用于我的UI的。我根据我的资源文件夹中有多少个精灵实例化按钮。我需要每个按钮将播放器的外观更改为不同的精灵,因此它们需要唯一的ID。

将此脚本附加到我的按钮预制件上:

    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 :(得分:0)

我建议改用Guid类型。有效地保证它们是唯一的,并且可以由您的框架轻松创建。另外,最好在构造函数中设置ID。例如:

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