Відповідь
Дозвольте розпочати, прямо відповівши на ваше запитання:
це працює, чи можу я ігнорувати помилку?
Ти міг би . Не слід , бо це означає, що щось не так. Ви звикли б до цієї помилки, але вона може "приховати" або викликати іншу помилку.
На даний момент у вас є повідомлення про помилку, і воно все ще працює правильно. І навпаки, це не працює і не має (точніше, не визнає) зворотного зв'язку чому, набагато гірше!
Поради
Щоб дізнатися, звідки це походить, розділіть всю цю річ на кілька рядків.
string resourceLocation = "Prefabs/Items/" + someName;
Object prefab = Resources.Load(resourceLocation);
Object instance = Instantiate(prefab);
GameObject someObject = instance as GameObject;
Помилка повідомляє лише вам, у якому рядку це сталося. Якщо в цьому коді сталася помилка, номер рядка розповість більше про те, яка частина тут пішла не так. Також я б радив використовувати загальну версію Resources.Load
, що насправді дасть нам на крок менше турбуватися:
string resourceLocation = "Prefabs/Items/" + someName;
GameObject prefab = Resources.Load<GameObject>(resourceLocation);
GameObject someObject = Instantiate(prefab);
З’ясування, чому
- Тепер трохи досвіду Єдності говорить нам, що "Об'єкт, на який Ви хочете вступити - нульовий", викликаний
Instantiate()
.
- Таким чином, це означає , що
prefab
є null
.
- Так що це означає
Resources.Load
прибутки null
.
- Документація
Resources.Load
говорить « повернення активу в path
разі його можна знайти в іншому випадку повертає NULL. »
- Отже, це означає, що він не знаходить заданий шлях (рядок, який я зателефонував
resourceLocation
)
У цьому шляху щось не так, тож очевидним першим кроком було б побачити, чим він насправді закінчується, з Debug.Log. Оскільки "все працює за призначенням", його ймовірність того, що відбувається певне дублювання там, де працює одна версія, а інша - це помилка.
У такому випадку корисно використовувати версію 2-х параметрів Debug.Log Debug.Log(resourceLocation, gameObject);
. Тепер, якщо ви натиснете на повідомлення журналу в редакторі Unity, він вибере, GameObject
звідки воно прийшло.