C# 添加到现有列表时遇到问题

C# 添加到现有列表时遇到问题,c#,unity3d,C#,Unity3d,所以我有一个包含列表清单的用户脚本。然后我使用一个公共静态用户在整个游戏中访问单个用户的信息 问题是在某个时候我失去了与库存的链接。 在唤醒函数中,如果调用Debug.Log(User.User.inventory.Count),它将打印0。 然而,如果我在将来的任何时候尝试访问这个清单,我会得到一个空引用错误,就好像它不存在并且不能添加到它一样 如果我将inspector中的列表的大小设为1,那么它以某种方式存在,并且我可以永远向它添加内容,但是在索引0处有一个死点 private void

所以我有一个包含列表清单的用户脚本。然后我使用一个公共静态用户在整个游戏中访问单个用户的信息

问题是在某个时候我失去了与库存的链接。 在唤醒函数中,如果调用Debug.Log(User.User.inventory.Count),它将打印0。 然而,如果我在将来的任何时候尝试访问这个清单,我会得到一个空引用错误,就好像它不存在并且不能添加到它一样

如果我将inspector中的列表的大小设为1,那么它以某种方式存在,并且我可以永远向它添加内容,但是在索引0处有一个死点

 private void AddItemToInventory(ItemObject item, Image uiSprite)
    {
        User.user.inventory.Add(item);
        uiSprite.sprite = GenerateOrbRaritySprite(RaritySprites.raritySprites, item.rarity);
        uiSprite.enabled = true;
    }
虽然我可以在inspector fine中看到它,但它在库存查找上失败了

“我的用户”具有以下Awake()函数,因此它可以在场景之间运行:

void Awake()
{
    if(user == null)
    {
        user = this;
        DontDestroyOnLoad(gameObject);
    }
    else if (user != this)
    {
        Destroy(gameObject);
    }
}

有什么想法吗?谢谢大家!

仅使用一个用户进行尝试

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

您的对象是否真的被访问了
User.User.
?它只是一个静态用户实例:在User.cs中,我有公共列表清单;然后我的User实例被称为User。公共静态用户;通常你会称之为
User.Instance
…嘿,bruglesco,谢谢你的回复!我得到一个错误,用户在此上下文中不存在,因为我正在使用与创建静态用户实例不同的脚本添加到资源清册。@Holden在使用新资源清册更新用户之前,您需要访问该用户。将用户作为参数传递是否有效?它不起作用,但它让我找到了答案!有一个地方我用一个空白的覆盖了我的清单。谢谢你的指导!