Возникли проблемы при добавлении в существующий список - PullRequest
0 голосов
/ 05 января 2019

Итак, у меня есть пользовательский скрипт, который содержит список инвентаря. Затем я использую общедоступного статического пользователя для доступа к информации об одном пользователе на протяжении всей игры.

Проблема в том, что в какой-то момент я теряю ссылку на этот инвентарь. В активной функции, если я вызываю 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);
    }
}

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 05 января 2019

Попробуйте только с одним пользователем.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...