Непонятная ошибка: "VerificationException: не удалось объединить стек на глубине 1, типы не совместимы"
Я работаю с Unity 4.6, если это актуально.
Полная ошибка (ошибка времени выполнения, а не время компиляции):
VerificationException: Error verifying UtilityExtensions:DeserializeFromEditorPrefs<T> (T,string): Could not merge stack at depth 1, types not compatible: T ([boxed] Complex) X T ([boxed] Complex) at 0x01ca
Определение DFEP:
public static T DeserializeFromEditorPrefs<T>(this T o, string prefix) where T : class {
Это строка, которая вызывает исключение (не имеет значения, какой тип я использую; все типы вызывают исключение; функция не имеет проблем при работе с неверными входными данными, ошибка на самом деле в вызове):
UtilityExtensions.DeserializeFromEditorPrefs(new AbilityInfuse(),"");
Я не могу понять, что происходит. Я использую эту функцию в других проектах, поэтому, возможно, это настройка проекта, но я не смог найти никакой информации о том, что может быть причиной этой ошибки. Есть несколько вариантов этой функции, но ни один из них не работает. Другие общие расширения из того же файла работают без проблем, только этот набор функций не будет работать.
AbilityInfuse помечается как Serializable, и даже с сериализуемым пустым классом проблема сохраняется.
1 ответ
Unity использует высокие параметры безопасности при сборке в Web Player. Я точно не знаю, какие есть какие-либо настройки, но переключение на сборку ПК убрало все настройки безопасности, которые препятствовали "проверке" функции.