Ошибки компиляции
Второй тип ошибки, о которой может сообщить ваша игра, — это ошибка компилятора. Ошибка компилятора возникает, когда ваша игра сталкивается с каким-либо типом ошибки, которую не смогла обнаружить проверка синтаксиса — очень просто например, забыть объявить переменную или ошибочно ввести строку как real — или когда ошибка связана с тем, как вы настроили инструменты компиляции из Platform Preferences для целевой платформы. Эти ошибки будут отловлены GameMaker Studio 2 в процессе компиляции игры, и эта информация также будет показана в Compiler Error Output, как показано ниже:
ПРИМЕЧАНИЕ: Эти ошибки обычно не выводят окно и просто показывают » Build Failed » в выводе компилятора. Если появляется окно, то это обычно ошибка Runner Error, которая объясняется здесь.
Все сообщения об ошибках компилятора будут иметь одинаковый формат:
[object] — [event] — [Line Number]: [error string]
Если ошибка найдена в сценарии, то это будет просто:
[script] — [Line Number]: [error string]
Затем вы можете дважды щелкнуть на любой из записей об ошибке компилятора, чтобы открыть данный актив в позиции, отмеченной как дающая ошибку, и затем вы можете использовать информацию, содержащуюся в сообщении. можно использовать информацию, содержащуюся в сообщении, чтобы точно определить, где именно в объекте или сценарии произошла ошибка. Однако иногда эти ошибки могут показаться немного загадочными, поэтому ниже вы найдете полный список всех ошибок и краткое объяснение того, что они означают:
Ошибка | Описание |
---|---|
Нет программы для компиляции | Предыдущая ошибка компиляции привела к тому, что дерево разбора компилятора не было создано, и поэтому у компилятора нет данных программы для компиляции |
Фатальная ошибка при компиляции [имя] — подробности ниже | Это сообщение означает, что обнаружена какая-то ошибка, но компилятор не может определить, какая и где (если такое происходит постоянно, вы можете обратиться в службу поддержки YoYo Games и предоставить данные, которые показывает окно вывода компилятора). |
Рекурсивное расширение макросов не поддерживается | Вы использовали рекурсивные макросы, которые ссылаются друг на друга и постоянно расширяются |
Невозможно найти TextureGroup [group] | Эта ошибка обычно возникает только при попытке запустить неправильно сформированный файл проекта (если это происходит постоянно, вы можете обратиться в службу поддержки YoYo Games и предоставить детали, которые показывает окно вывода компилятора) |
Неправильное преобразование [value] в число | Вы попытались преобразовать заданное значение, например, строку, в число |
Деление на 0 | Вы пытались разделить значение на 0 |
Использован неверный идентификатор объекта [object ID] | Вы попытались получить доступ к объекту, используя неверное значение ID |
Незакрытый комментарий ( /* ) в конце сценария | Вы создали комментарий к сценарию с помощью /* [comment] */ , но не поставили закрывающий тег комментария. |
Неверный токен | В коде вашей игры есть недопустимый символ, что может произойти с символами иностранного языка или Unicode |
Номер [num] в неправильном формате | Заданное число — показанное в ошибке — не является правильным форматом для выполняемой функции или операции, например, вы предоставили целое число, когда требуется указатель |
Возникла неожиданная ошибка EOF | Вы неожиданно достигли конца файла при использовании функций файла |
Невозможно Не строка | Вы пытались использовать » ! » (не) в строке |
Невозможно отрицать строку | Вы пытались отрицать строку, например string = -string |
Неправильное количество аргументов для функции [function] | Вы указали слишком много или слишком мало аргументов для данной функции |
Не удалось разобрать action_execute_script() — получено неверное количество аргументов | Действие DnD™ «Выполнить сценарий» имеет слишком много или слишком мало аргументов для вызываемого сценария |
Неизвестная функция [function] проверьте, не пуст ли скрипт. | Был вызван скрипт или функция, которую компилятор не распознал (эта ошибка обычно возникает при пустых ссылках на активы скрипта, поскольку компилятор удаляет эти активы при компиляции). |
Функция [function] ожидает n аргументов, a предоставлено | Функция получила неправильное количество аргументов ( n ), когда ожидалось определенное количество ( a ) |
Присвоение пустого значения (функция ничего не возвращает?) | Вы пытались присвоить возвращаемое значение функции, когда эта функция ничего не возвращает |
Невозможно найти функцию [function] | Вы вызвали неизвестную функцию |
Вызов функции, которой нужен экземпляр, а экземпляр недоступен | Вызываемая функция или сценарий предназначены для действия над экземпляром, но на момент выполнения не существует ни одного экземпляра |
Вызов функции, которая нуждается в другой функции, а другая функция недоступна | Вы использовали ключевое слово other вне события столкновения или вне высказывания with . |
Ошибка именования аргументов, n аргументов, но не найдена ссылка на a | Вы задали несколько аргументов сценарию, но не указали один из них в сценарии, например, ваш сценарий принимает три аргумента, но вы используете только аргументы n и a |
Невозможно сравнить аргументы | Вы пытались сравнить два разных типа аргументов, например, строку и вещественное число. |
Неизвестная функция или сценарий [functions/script] | Компилятор не распознает вызываемую функцию или скрипт |
Невозможно использовать имя ресурса [resource] , поскольку он не экспортируется. | Вы попытались получить доступ к ресурсу, который не был отмечен как часть проекта для компилируемой платформы. |
Невозможно использовать имя функции/скрипта для переменной, используя [functions/script] | Вы пытались использовать в качестве переменной, например, имя функции или имя скрипта: string = «Hello World» |
Невозможно использовать аргумент вне сценария | Встроенные переменные аргументов можно использовать только внутри сценария, но вы пытались использовать их в другом месте |
Нет ссылок на argument[num] , но есть ссылки argument[num] | Вы используете ссылку на аргумент, которого не существует, но который может быть связан с другим аргументом. |
Неправильное количество аргументов для аксессора | Вы указали неправильное количество аргументов при использовании аксессора |
Неправильный тип аргументов для (одного из перечисленных ниже): /, div, mod, +, -, &&, ||, &, |, ^, > | Вы указали неверный тип аргумента для вычисляемого выражения |
Использование неинициализированной переменной [var] | Вы попытались использовать именованную переменную до того, как она была инициализирована |
Переменная [var] доступна только для чтения | Вы пытались изменить именованную переменную, когда она не может быть изменена |
Невозможно найти переменную с именем [var] | Именованная переменная не может быть найдена в текущей компиляции |
Некорректная ссылка на переменную | Вы попытались сослаться на переменную неправильным способом |
Попытка установить переменную [var], доступную только для чтения. | Вы пытались установить переменную, которая доступна только для чтения |
Невозможно повторно объявить встроенную переменную | Вы пытались объявить локальную переменную, используя то же имя, что и одна из встроенных переменных |
Невозможно использовать имя ресурса для переменной | Вы можете использовать то же имя ресурса из дерева ресурсов в качестве локальной переменной |
[Переменная] доступно только для чтения | Вы пытались использовать переменную, которая была помечена как доступная только для чтения |
Невозможно установить константу [константа] на значение | Вы пытались установить константу в другое значение |
Константа здесь недействительна | Вы пытались использовать константу, которая не является действительной для выполняемого кода |
Невозможно присвоить [var] — это константа | Вы попытались присвоить новое значение именованной константе |
Индекс массива не должен быть отрицательным | Вы пытались получить доступ, создать или установить значение массива, используя отрицательный индекс массива |
Некорректный условный оператор | Вы использовали ошибочный условный (троичный) оператор или оператор if, а не формат: [condition] ? [expression1] : [expression2]; |
Если требует утверждения then | Вы написали оператор if и выражение для оценки, но не указали часть then для выполнения |
неверно сформированное заявление о назначении | В коде вы неправильно используете оператор присваивания |
Деформированный оператор if / repeat / while / do / for / with / switch / break / continue / exit | Структура приведенного утверждения неверна. |
Неправильно сформированное сообщение post inc или dec | Вы пытались использовать [var]++ или [var]— незаконным способом |
Неправильно сформированный оператор pre inc или dec | Вы пытались использовать ++[var] или —[var] незаконным способом |
Некорректная глобальная gml_pragma | Вы создали неправильную глобальную строку при использовании gml_pragma |
Некорректная форма PNGCrush gml_pragma | Вы создали неправильную строковую команду для PNGCrush при использовании gml_pragma |
Некорректная форма Texgroup.Scale gml_pragma | Вы создали неправильную глобальную строку при использовании gml_pragma |
Значение по умолчанию нельзя использовать несколько раз в переключателе | В операторе switch вы определили значение по умолчанию: более одного раза |
Несоответствие типа выражения клаузулы (все выражения клаузулы должны быть одного типа) | В вашем переключателе вы проверяете два различных типа регистра констант, например, строка в одном случае и целое число в другом. |
Аргументация по делу должна быть постоянной | Вы пытались использовать значение, которое не оценивается как константа, в одном из случаев переключения |
Утверждение в переключателе ДОЛЖНО появляться после регистра или значения по умолчанию | Вы добавили оператор в переключатель вне вызова case: или default: . |
Найдено дублирующее заявление по делу / оригинал здесь | Вы использовали одну и ту же константу case в двух разных местах внутри switch (обратите внимание, что комментарий «original here» будет находиться на другой строке и его можно щелкнуть, чтобы показать исходный случай) |
Нет возвращаемого значения из выражения (есть ли у выражения возвращаемое значение?) | Вы пытались присвоить переменной возвращаемое значение из выражения, когда выражение ничего не возвращает. |
Ожидание выражения после ‘.’ | Вы ошибочно использовали обозначение точки » . » и не добавили выражение после слов. |
Неожиданный символ [символ] в выражении | В выражении используется символ, который не входит в принятый набор символов выражения — соответствующий символ будет показан |
Неизвестно Предварительный оператор | Вы пытались использовать символ в качестве предоператора, когда этот символ не разрешен, например, **[var] или >>[var] — допустимы только ++ и — . |
Неизвестный оператор почтовой связи | Вы пытались использовать символ в качестве постоператора, когда этот символ не разрешен, например, [var]** или [var]>> — допустимы только ++ и — . |
Неизвестная прагма [gml_pragma string] | Вы использовали строку прагмы, которая неизвестна компилятору |
Неизвестный унарный оператор | Вы пытались использовать неизвестный символ в качестве унарного оператора |
Неизвестный двоичный оператор | Вы пытались использовать неизвестный символ в качестве двоичного оператора |
Неизвестный оператор [оператор] | Вы попытались использовать неизвестный символ в качестве оператора (символ будет показан в ошибке) |
Перерыв, используемый без контекста | Вы не использовали разрыв внутри переключателя, петли или любой другой разрешенной структуры |
Продолжение используется без контекста | Вы не использовали continue в правильном контексте |
продолжение заявления не допускается на данном этапе | Вы использовали continue в той части вашего кода, где это запрещено |
перечисление num недействительно | Номер перечисления недействителен для данного перечисления |
неправильное перечисление | Вы неправильно создали перечисление |
enum [перечисление] уже определено | Вы попытались определить перечисление, используя то же имя, что и другое, ранее определенное. |
неправильное заполнение перечисления | Перечисление имеет недопустимую запись |
выражение перечисления должно быть целочисленной константой | Запись перечисления не оценивается как целочисленная константа |
Ссылка на перечисление [ключ] не существует в [перечислении] | Вы попытались сослаться на запись перечисления, используя ключ, который ранее не был определен для этого перечисления |