【发布时间】:2019-01-05 12:21:47
【问题描述】:
所以我有一个包含列表清单的用户脚本。然后我使用一个公共静态 User 用户在整个游戏过程中访问单个用户的信息。
问题是在某些时候我失去了指向该库存的链接。 在唤醒函数中,如果我调用 Debug.Log(User.user.inventory.Count),它会打印 0。 但是,如果我将来尝试访问此库存,我会收到空引用错误,就好像它不存在并且无法添加到它一样。
如果我将检查器中列表的大小设置为 1,那么它会以某种方式存在,我可以永远添加东西,但是我在索引 0 处有一个死点。
private void AddItemToInventory(ItemObject item, Image uiSprite)
{
User.user.inventory.Add(item);
uiSprite.sprite = GenerateOrbRaritySprite(RaritySprites.raritySprites, item.rarity);
uiSprite.enabled = true;
}
库存查找失败,尽管我可以在检查器中看到它。
我的用户具有以下 Awake() 函数,以便它停留在场景之间:
void Awake()
{
if(user == null)
{
user = this;
DontDestroyOnLoad(gameObject);
}
else if (user != this)
{
Destroy(gameObject);
}
}
有什么想法吗?谢谢!
【问题讨论】:
-
你的对象真的被
User.user.访问了吗? -
它只是一个静态用户实例:在 User.cs 我有公共 List
库存;然后我的用户实例被称为用户。公共静态用户用户; -
通常你会称它为
User.Instance...