我花了很长时间寻找在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++;
}
}
我是初学者,因此请多加注意。这是我第一次使用数组,这为我的项目带来了奇迹!
答案 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...
}