首页 > 解决方案 > 如何在 Unity C# 中为实例化对象提供唯一 ID

问题描述

我环顾四周寻找在 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++;
         }
}

我是初学者,因此不胜感激。这是我第一次使用数组,它为我的项目创造了奇迹!

标签: c#unity3d

解决方案


我建议改用该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...
}

推荐阅读