Добавлен alexprey,
опубликован
Заметки по Unity3D
Содержание:
Писал я скриптик, большой, жирный, с кучей вспомогательных методов. Дальше перешел к тестированию, пытаюсь перетащить его на объект. И вот, я получил ошибку!
Вы просто не представляете как было сложно найти причину этой ошибки. Пришлось удалять по строчке, пока не нашел проблему.
Сперва думал, что проблема в наследовании интерфейса. Но... нет.
Использование пространства имен? Тоже, мимо.
В ходе дальнейших экспериментов выяснил, что проблема возникла в написанных функциях. А если быть точнее в такой вот строчке
Сперва думал, что проблема в наследовании интерфейса. Но... нет.
Использование пространства имен? Тоже, мимо.
В ходе дальнейших экспериментов выяснил, что проблема возникла в написанных функциях. А если быть точнее в такой вот строчке
public bool IsUseResource(ResourceType resourceType, ResourceAction resourceAction = ResourceAction.Count)
Казалось бы, что тут может быть не так? А косяк в параметре по умолчанию.
// Замена
ResourceAction resourceAction = ResourceAction.Count
// на
ResourceAction resourceAction
решило проблему... Неожиданно, не правда ли???
Теперь мы можем сделать следующий вывод:
Не используйте параметры по умолчанию в методах MonoBehaviour!
Теперь мы можем сделать следующий вывод:
Не используйте параметры по умолчанию в методах MonoBehaviour!
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Devion
Тело:
UPD: со статиком перегнул, он не обязателен.
Если вы кинули валидный скрипт - он никуда не денется (единственное что при перезагрузке может сбиться, либо поля захайдить), так как проверка идет при добавлении элемента.
Отредактирован Devion
Параметр по умолчанию, сам по себе, без этих условий не приводит к таким последствиям.
Пространства имён, сами по себе тоже.
Статик методы, наследие от монобехи, аналогично.