因此,我有一个包含列表清单的用户脚本。然后,我使用一个公共的静态用户用户来访问整个游戏中单个用户的信息。
问题是在某些时候我丢失了与该广告资源的链接。 在唤醒功能中,如果我调用Debug.Log(User.user.inventory.Count),它将输出0。 但是,如果我以后尝试访问此广告资源,则会收到Null Reference错误,好像它不存在并且无法添加。
如果我将检查器中列表的大小设置为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);
}
}
有什么想法吗?谢谢!
答案 0 :(得分:1)
仅尝试一个用户。
private void AddItemToInventory(ItemObject item, Image uiSprite)
{
user.inventory.add(item);
uiSprite.sprite = GenerateOrbRaritySprite(RaritySprites.raritySprites, item.rarity);
uiSprite.enabled = true;
}
并且由于此方法无权访问用户,因此需要将用户作为参数传递。
private void AddItemToInventory(User user, ItemObject item, Image uiSprite)
{
user.inventory.add(item);
uiSprite.sprite = GenerateOrbRaritySprite(RaritySprites.raritySprites, item.rarity);
uiSprite.enabled = true;
}