Почему я получаю исключение, что объект PlayConversations уничтожен, но я пытаюсь получить к нему доступ? - PullRequest
0 голосов
/ 10 февраля 2020

Не то, что является исключением, но почему я его получаю?

MissingReferenceException: объект типа 'PlayConversations' был уничтожен, но вы все еще пытаетесь получить к нему доступ. Ваш сценарий должен либо проверить, является ли он нулевым, либо вы не должны уничтожать объект.

Это скриншот перед запуском игры. Скрипт PlayConversations прикрепляется только к объекту Trigger Conversation:

Before running the game

После запуска игры в той точке игры она пытается использовать скрипт PlayConversations Я получаю исключение. И я смотрел много раз, я не могу найти ни один объект, уничтоженный или что PlayConversations не прикреплен, не разрушен или отсутствует.

Это скриншот после запуска игры, он создает клон игрока, и я все еще могу см. сценарий PlayConversations:

After running the game

Это сценарий:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayConversations : MonoBehaviour
{
    private static ConversationTrigger conversationTrigger;
    private static PlayConversations instance;

    private void Awake()
    {
        conversationTrigger = GetComponent<ConversationTrigger>();
        instance = this;
    }

    public static void AddConversationToPlay(int index)
    {
        ConversationTrigger.conversationsToPlay.Add(index);
    }

    public static void PlayMultipleConversations()
    {
        instance.StartCoroutine(conversationTrigger.PlayConversations());
    }

    public static void PlaySingleConversation(int ConversationIndex)
    {
        instance.StartCoroutine(conversationTrigger.PlayConversation(ConversationIndex));
    }  
}

Исключение происходит в строке:

instance.StartCoroutine(conversationTrigger.PlayConversation(ConversationIndex));

Кажется, что экземпляр равен нулю.

1 Ответ

0 голосов
/ 10 февраля 2020

Похоже, вы используете переменную stati c для dialogTrigger, которую вы установили в Awake для экземпляра.

Возможно ли, что у вас есть несколько экземпляров этого компонента в игре, и Awake присваивает переменной значение null в другом экземпляре.

Я бы предложил добавить некоторые записи в вызове Awake и зарегистрируйте некоторую информацию в назначении там. Если это проблема, вы сможете щелкнуть журнал и перейти к объекту в вашей сцене.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...