Как игнорировать ошибку в unity

Overview

Unity’s Safe Mode is a mode that the Unity Editor can enter when you open a project that has script compilation errors. Safe Mode is designed to provide the best environment for resolving compilation errors, so that you can quickly return your project to a functional state.

In Safe Mode, Unity provides a minimal version of the Editor user interface, with limited functions. It only imports script-related assets, and prevents the import of non-script assets (such as models, materials, textures and prefabs). This is because Safe Mode is not meant for content production, only for resolving compilation errors.

Safe Mode never allows managed code to run from your project, or its packages. This means your own scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary
such as Editor scripts, asset post-processors, and scripted importers do not run. Safe Mode also disables assembly overrides, and the Burst and Roslyn Analysers. This ensures the Editor in Safe Mode is always fully functional and reliable, even when it opens a project in a very broken state.

Unity automatically exits Safe Mode when it detects there are no more compilation errors. When it exits Safe Mode, Unity imports your project in full, and the Editor restores its normal full functionality.

Common causes of compilation errors

Some common scenarios that might result in you encountering compilation errors occur when you:

  • Upgrade a project from an older version of Unity to a newer version.
  • Open a project in a different version of Unity from the one it was created in.
  • Open a project with a missing packageA container that stores various types of features and assets for Unity, including Editor or Runtime tools and libraries, Asset collections, and project templates. Packages are self-contained units that the Unity Package Manager can share across Unity projects. Most of the time these are called packages, but occasionally they are called Unity Package Manager (UPM) packages. More info
    See in Glossary
    , or an incorrect version of a package.
  • Open a project which has errors in your own scripts.
  • Open a project under version controlA system for managing file changes. You can use Unity in conjunction with most common version control tools, including Perforce, Git, Mercurial and PlasticSCM. More info
    See in Glossary
    , where the latest changes you pulled contained compilation errors.

Opening a project that has compilation errors without Safe Mode can cause many kinds of problems. For example, packagesPackages are collections of assets to be shared and re-used in Unity. The Unity Package Manager (UPM) can display, add, and remove packages from your project. These packages are native to the Unity Package Manager and provide a fundamental method of delivering Unity functionality. However, the Unity Package Manager can also display Asset Store packages that you downloaded from the Asset Store. More info
See in Glossary
in your project might not load or function properly, and your assets might be imported incorrectly, resulting in incorrect cached artifacts in your Library or in your Cache ServerA standalone app that you can run on your local computer that stores the imported asset data to reduce the time it takes to import assets. More info
See in Glossary
.

In these situations, you usually don’t want to wait for the rest of the project to import before you can resolve the errors. Safe Mode provides you with the tools to resolve these script-related problems yourself, or to use version control to update your project to a newer version that resolves the errors, without waiting for a full import of the project.

Entering Safe Mode

When you open a project which has compilation errors, the Editor displays a dialog to ask whether you want to enter Safe Mode:

The Enter Safe Mode? dialog prompts you to enter Safe Mode when you open a project with compilation errors

The Enter Safe Mode? dialog prompts you to enter Safe Mode when you open a project with compilation errors

At this point you have three choices:

  • Enter Safe Mode
  • Ignore the errors and open your project
  • Quit Unity

In most cases, you should select Enter Safe Mode to resolve the errors in your project (or, if you’re working with version control, to pull changes which contain fixes to the errors). Safe Mode provides the best environment for resolving compilation errors, so that you can quickly return your project to a functional state before Unity imports the rest of your project.

However, there are some cases where you might not want to enter Safe Mode, in which case you can Quit Unity, or Ignore the errors.

Note: You can disable this dialog in Edit > Preferences > Asset Pipeline > Show Enter Safe Mode Dialog. If you disable the dialog, Unity automatically enters Safe Mode when it opens a project with compilation errors.

Quitting without entering Safe Mode

Safe Mode is specifically designed for fixing compilation errors. If you are working on a Unity project as part of a team, but you are not responsible for the scripts that are causing errors, and don’t know what to do, you should select Quit in the dialog, and contact the programmers on your team for advice.

Ignoring the errors and continuing import

There are some situations where you don’t need the project to be in a usable state (for example, if you are opening an old project to copy some parts out, or to simply inspect how it is configured). In this case, you can ignore the errors and open your project in a broken state anyway.

If you select Ignore, and later want to open the project in Safe Mode, you can close and re-open Unity to access the “Enter Safe Mode” dialog again.

Implications of ignoring compilation errors

If you choose to ignore the errors, Unity continues to import the rest of your assets and opens your project fully. Potential implications here include:

  • Your project might not be in a usable state. You might not be able to enter Play Mode, or create builds of your project, until the errors are resolved. In addition, any packages in your project might not load correctly, or at all.

  • Unity might need to import your assets twice; once at launch, and again after you resolve the project’s compilation errors. This increases the amount of time it takes to load your project in a usable state.

  • If your project uses a Scriptable Render Pipeline, your render pipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
    See in Glossary
    might not load, resulting in visual problems such as the error shader.

  • Script compilation errors can cause secondary errors within your project. For example, if a scripted importer in your project is unable to load because of compilation errors, your assets might import in an incorrect state.

Safe Mode is designed to help you avoid all of these problems.

The Editor in Safe Mode

In Safe Mode, Unity provides a minimal Editor interface with limited functions.

The Unity Editor in Safe Mode

The Unity Editor in Safe Mode

The Unity Editor displays a Safe Mode banner in the toolbarA row of buttons and basic controls at the top of the Unity Editor that allows you to interact with the Editor in various ways (e.g. scaling, translation). More info
See in Glossary
section at the top of the Editor, which replaces the standard Editor toolbar. The toolbar indicates that you are in Safe Mode, and provides an Exit Safe Mode button, which allows you to ignore the remaining errors and exit Safe Mode. The banner also indicates whether your project uses preview packagesA preview package is in development and not yet ready for production. A package in preview might be at any stage of development, from the initial stages to near completion.
See in Glossary
.

The Unity Editor retains its integration with code editors in Safe Mode, so you can double-click on script assets or console errors to open their associated scripts, and you can open the C# project via the Assets menu. It also retains its integration with Version Control systems.

The restricted set of windows in Safe Mode

The Editor displays a limited selection of windows in Safe Mode. These are:

  • The Console window
  • The Project window
  • The InspectorA Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
    See in Glossary
    window
  • The Package Manager window

These are the only windows available because they relate to fixing compilation errors. No other windows are available in Safe Mode.

The Editor Menu in Safe Mode

The options available in the Editor’s main menu are restricted to a limited set while in Safe Mode. You can only see and select the menu options which relate to working with scripts; the regular options for creating and working with other content are not available. For example, you cannot create or open ScenesA Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary
, or create non-script assets such as primitive shapes, lights, or camerasA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
See in Glossary
. The GameObjectThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary
and Component menus are not present, and the Window menu only offers a restricted set of windows.

The restricted Editor Menu as it appears in Safe Mode, displaying the available options for creating assets.

The restricted Editor Menu as it appears in Safe Mode, displaying the available options for creating assets.

The Project window in Safe Mode

In Safe Mode, the Project windowA window that shows the contents of your Assets folder (Project tab) More info
See in Glossary
has some functional differences compared with its normal behavior outside of Safe Mode.

The primary difference is that you can only select compilation-related assets. Other asset types are not selectable. They remain visible as grayed-out entries in the Project window, but you cannot select or edit them.

Specifically, the compilation-related asset types that you can interact with are:

  • C# files (.cs)
  • DLL files (.dll)
  • Assembly definitions (.asm)
  • Response files (.rsp)
  • Ruleset files (.ruleset)

In addition, the icons for the non-selectable assets do not show a preview of the content of the asset. Instead, they show a generic icon to represent the asset’s type.

The Project window displays generic icons for non-selectable assets.

The Project window displays generic icons for non-selectable assets.

The create (+) menu button is disabled, and the Project window context menu has a reduced set of options available.

The create (+) menu button in the project window, disabled in Safe Mode

The create (+) menu button in the project window, disabled in Safe Mode

Exiting Safe Mode

Unity automatically exits Safe Mode when you have resolved all the compilation errors. Unity then continues to open your project and import your assets.

To exit Safe Mode while there are still compilation errors remaining, select the Exit Safe Mode button in the Safe Mode toolbar. This is not recommended (see Implications of ignoring compilation errors), and Unity prompts you with a dialog to confirm your decision.

The Exit Safe Mode button in the Safe Mode toolbar

The Exit Safe Mode button in the Safe Mode toolbar

If you exit Safe Mode while errors remain in your project, and later want to return to Safe Mode, you can close and re-open Unity to access the “Enter Safe Mode” dialog again..

Safe Mode in Batch Mode

In Batch Mode, Unity automatically quits if there are compilation errors in your project, unless you use the -ignoreCompilerErrors command line argument.

Обзор

Безопасный режим Unity — это режим, в который редактор Unity может перейти, когда вы открываете проект, в котором есть ошибки компиляции скрипта. Безопасный режим обеспечивает наилучшую среду для устранения ошибок компиляции, чтобы вы могли быстро вернуть проект в рабочее состояние.

В безопасном режиме Unity предоставляет минимальную версию пользовательского интерфейса редактора с ограниченными функциями. Он импортирует только активы, связанные со скриптом, и запрещает импорт активов, не связанных со скриптом (таких как модели, материалы, текстуры и префабы). Это связано с тем, что безопасный режим предназначен не для создания контента, а только для устранения ошибок компиляции.

Безопасный режим никогда не позволяет запускать управляемый код из вашего проекта или его пакетов. Это означает ваши собственные скриптыфрагмент кода, который позволяет вам создавать свои собственные компоненты, запускать игровые события, изменять свойства компонентов с течением времени. и отвечайте на ввод пользователя любым удобным для вас способом. Подробнее
См. в Словарь
, например Скрипты редактора, постпроцессоры активов и программы импорта со сценариями не запускаются. Безопасный режим также отключает переопределения сборки, а также Burst и Roslyn Анализаторы. Это гарантирует, что редактор в безопасном режиме всегда полностью функционален и надежен, даже если он открывает проект в очень поврежденном состоянии.

Unity автоматически выходит из безопасного режима, когда обнаруживает, что больше нет ошибок компиляции. При выходе из безопасного режима Unity полностью импортирует ваш проект, а редактор восстанавливает свою обычную полную функциональность.

Распространенные причины ошибок компиляции

Некоторые распространенные сценарии, которые могут привести к возникновению ошибок компиляции, возникают, когда вы:

  • Обновите проект со старой версии Unity на более новую.
  • Откройте проект в версии Unity, отличной от той, в которой он был создан.
  • Откройте проект с отсутствующим пакетомконтейнером, в котором хранятся различные типы функции и ресурсы для Unity, включая инструменты и библиотеки Editor или Runtime, коллекции ресурсов и шаблоны проектов. Пакеты — это автономные единицы, которые диспетчер пакетов Unity может совместно использовать в проектах Unity. В большинстве случаев они называются пакетами, но иногда их называют пакетами Unity Package Manager (UPM). Подробнее
    См. в Словарь
    или неверную версию пакета.
  • Откройте проект, в котором есть ошибки в ваших собственных скриптах.
  • Откройте проект в системе управления версиямисистеме управления изменениями файлов. Вы можете использовать Unity в сочетании с наиболее распространенными инструментами контроля версий, включая Perforce, Git, Mercurial и PlasticSCM. Подробнее
    Посмотрите в Словарь
    , где последние внесенные вами изменения содержали ошибки компиляции.

Открытие проекта с ошибками компиляции без безопасного режима может вызвать множество проблем. Например, пакетыПакеты — это наборы ресурсов, которыми можно делиться и повторно использовать в Единство. Диспетчер пакетов Unity (UPM) может отображать, добавлять и удалять пакеты из вашего проекта. Эти пакеты являются родными для менеджера пакетов Unity и обеспечивают фундаментальный метод предоставления функциональных возможностей Unity. Однако диспетчер пакетов Unity также может отображать пакеты ресурсов, загруженные из магазина активов. Подробнее
См. в Словарь
в вашем проекте может не загрузиться или не работать неправильно, и ваши ресурсы могут быть неправильно импортированы, что приведет к некорректным кэшированным артефактам в вашей библиотеке или в вашем Кэш-серверОтдельное приложение, которое можно запустить на локальном компьютере и которое хранит импортированные данные ресурсов, чтобы сократить время, необходимое для импорта ресурсов. Подробнее
См. в Словарь
.

В таких ситуациях обычно не нужно ждать, пока остальная часть проекта будет импортирована, прежде чем вы сможете устранить ошибки. Безопасный режим предоставляет вам инструменты для самостоятельного решения этих проблем, связанных со сценариями, или для использования контроля версий для обновления вашего проекта до более новой версии, которая устраняет ошибки, не дожидаясь полного импорта проекта.

Вход в безопасный режим

Когда вы открываете проект с ошибками компиляции, редактор отображает диалоговое окно с вопросом, хотите ли вы войти в безопасный режим:

Войти в безопасный режим? диалог предлагает вам войти в безопасный режим, когда вы открываете проект с ошибками компиляции

Войти в безопасный режим? диалог предлагает вам войти в безопасный режим, когда вы открываете проект с ошибками компиляции

На данный момент у вас есть три варианта:

  • Войти в безопасный режим
  • Игнорировать ошибки и открыть проект
  • Выйти Unity

В большинстве случаев следует выбрать Войти в безопасный режим, чтобы устранить ошибки в проекте (или, если вы работаете с контролем версий, чтобы получить изменения, содержащие исправления ошибок). Безопасный режим обеспечивает наилучшую среду для устранения ошибок компиляции, так что вы можете быстро вернуть свой проект в рабочее состояние, прежде чем Unity импортирует остальную часть вашего проекта.

Однако в некоторых случаях вам может не понадобиться входить в безопасный режим, и в этом случае вы можете Выйти из Unity или Игнорировать ошибки.

Примечание. Это диалоговое окно можно отключить, выбрав Правка > Настройки > Общие > Показать диалоговое окно входа в безопасный режим. . Если вы отключите это диалоговое окно, Unity автоматически перейдет в безопасный режим при открытии проекта с ошибками компиляции.

Выход без входа в безопасный режим

Безопасный режим специально разработан для исправления ошибок компиляции. Если вы работаете над проектом Unity в составе команды, но не несете ответственности за скрипты, вызывающие ошибки, и не знаете, что делать, вам следует выбрать Выход в диалоговом окне. , и обратитесь за советом к программистам из вашей команды.

Игнорирование ошибок и продолжение импорта

В некоторых ситуациях вам не нужно, чтобы проект был в пригодном для использования состоянии (например, если вы открываете старый проект, чтобы скопировать некоторые части или просто проверить, как он настроен). В этом случае вы можете проигнорировать ошибки и все равно открыть свой проект в сломанном состоянии.

Если вы выберете Игнорировать, а позже захотите открыть проект в безопасном режиме, вы можете закрыть и снова открыть Unity, чтобы снова получить доступ к диалоговому окну «Войти в безопасный режим».

Последствия игнорирования ошибок компиляции

Если вы решите проигнорировать ошибки, Unity продолжит импорт остальных ресурсов и полностью откроет ваш проект. Потенциальные последствия здесь включают:

  • Возможно, ваш проект находится в непригодном для использования состоянии. Возможно, вы не сможете войти в игровой режим или создать сборки своего проекта, пока ошибки не будут устранены. Кроме того, любые пакеты в вашем проекте могут загружаться неправильно или вообще не загружаться.

  • Возможно, Unity потребуется дважды импортировать ваши ресурсы; один раз при запуске и еще раз после устранения ошибок компиляции проекта. Это увеличивает время, необходимое для загрузки проекта в пригодном для использования состоянии.

  • Если в вашем проекте используется конвейер рендеринга с поддержкой сценариев, ваш модуль рендеринга может не загрузиться, что приведет к визуальным проблемам, таким как розовый/пурпурный значок ShaderНебольшой скрипт, содержащий математические расчеты и алгоритмы расчета цвета каждого визуализируемого пикселя на основе входных данных освещения и Конфигурация материала. Подробнее
    See in Словарь
    ».

  • Ошибки компиляции скрипта могут вызвать вторичные ошибки в вашем проекте. Например, если программа импорта со сценарием в вашем проекте не может загрузиться из-за ошибок компиляции, ваши ресурсы могут быть импортированы в неправильном состоянии.

Безопасный режим призван помочь вам избежать всех этих проблем.

Редактор в безопасном режиме

В безопасном режиме Unity предоставляет минимальный интерфейс редактора с ограниченными функциями.

Редактор Unity в безопасном режиме

Редактор Unity в безопасном режиме

Редактор Unity отображает баннер безопасного режима на панели инструментовряд кнопок и основных элементов управления в верхней части Unity Редактор, который позволяет взаимодействовать с редактором различными способами (например, масштабирование, перевод). Подробнее
См. в разделе Словарь
в верхней части Редактора, который заменяет стандартный Редактор. панель инструментов. Панель инструментов показывает, что вы находитесь в безопасном режиме, и предоставляет кнопку Выйти из безопасного режима, которая позволяет игнорировать оставшиеся ошибки и выйти из безопасного режима. Баннер также указывает, использует ли ваш проект пакеты предварительной версиипакет preview. находится в разработке и еще не готов к производству. Предварительный просмотр пакета может находиться на любой стадии разработки, от начальных до практически завершенных.
См. в Словарь
.

Редактор Unity сохраняет свою интеграцию с редакторами кода в безопасном режиме, поэтому вы можете дважды щелкнуть ресурсы скрипта или ошибку консолиs, чтобы открыть связанные с ними сценарии, и вы можете открыть проект C# через меню Ресурсы. Он также сохраняет свою интеграцию с системами контроля версий.

Ограниченный набор окон в безопасном режиме

Редактор отображает ограниченный набор окон в безопасном режиме. Это:

  • Окно консоли
  • Окно проекта
  • Окно ИнспекторОкно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам проверять и отредактируйте значения. Дополнительная информация
    См. в окне Словарь
  • Окно диспетчера пакетов

Это единственные доступные окна, поскольку они связаны с исправлением ошибок компиляции. В безопасном режиме другие окна недоступны.

Меню редактора в безопасном режиме

В безопасном режиме параметры, доступные в главном меню редактора, ограничены. Вы можете видеть и выбирать только те пункты меню, которые относятся к работе со скриптами; обычные возможности создания и работы с другим контентом недоступны. Например, вы не можете создавать или открывать СценыСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
или создайте ресурсы без сценария, такие как как примитивные формы, источники света или камерыКомпонент, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
См. в Словарь
. GameObjectОсновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. . Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь
и Компонент меню отсутствуют, а меню Window предлагает только ограниченный набор окон.

Ограниченное меню редактора в безопасном режиме, отображающее доступные параметры для создания ресурсов.

Ограниченное меню редактора в безопасном режиме, отображающее доступные параметры для создания ресурсов.

Окно проекта в безопасном режиме

В безопасном режиме окно проектаокно, отображающее содержимое ваших ресурсов. Папка (вкладка «Проект») Подробнее
See in Словарь
имеет некоторые функциональные отличия от обычного поведения вне безопасного режима. .

Основное отличие состоит в том, что вы можете выбирать только ресурсы, связанные с компиляцией. Другие типы активов недоступны для выбора. Они остаются видимыми как затененные записи в окне проекта, но их нельзя выбирать или редактировать.

В частности, типы объектов, связанных с компиляцией, с которыми вы можете взаимодействовать:

  • Файлы C# (.cs)
  • DLL-файлы (.dll)
  • Определения сборки (.asm)
  • Файлы ответов (.rsp)
  • Файлы наборов правил (.ruleset)

Кроме того, значки невыбираемых ресурсов не отображают предварительный просмотр содержимого ресурса. Вместо этого они показывают общий значок для представления типа актива.

В окне «Проект» отображаются общие значки для невыбираемых ресурсов.

В окне «Проект» отображаются общие значки для невыбираемых ресурсов..

Кнопка меню создать (+) отключена, а контекстное меню окна проекта содержит ограниченный набор доступных параметров.

Кнопка меню «Создать» (+) в окне проекта, отключенная в безопасном режиме

Кнопка меню создать (+) в окне проекта, отключена в безопасном режиме.

Выход из безопасного режима

Unity автоматически выходит из безопасного режима после устранения всех ошибок компиляции. Затем Unity продолжает открывать ваш проект и импортировать ваши ресурсы.

Чтобы выйти из безопасного режима, пока еще остаются ошибки компиляции, нажмите кнопку Выйти из безопасного режима на панели инструментов безопасного режима. Это не рекомендуется (см. Последствия игнорирования ошибок компиляции), и Unity предложит вам подтвердить свое решение в диалоговом окне.

Кнопка «Выйти из безопасного режима» на панели инструментов «Безопасный режим».

Кнопка Выйти из безопасного режима на панели инструментов безопасного режима.

Если вы выходите из безопасного режима, когда в вашем проекте остаются ошибки, а позже хотите вернуться в безопасный режим, вы можете закрыть и снова открыть Unity, чтобы снова получить доступ к диалоговому окну «Войти в безопасный режим».

Безопасный режим в пакетном режиме

В пакетном режиме Unity автоматически завершает работу, если в вашем проекте есть ошибки компиляции, если вы не используете -ignoreCompilerErrors аргумент командной строки.

$begingroup$

I’m trying to debug a Unity project using the Unity Editor and Visual Studio. A runtime exception keeps popping up, but the debugger doesn’t halt when an exception occurs, making it impossible to debug my code efficiently.

In Visual Studio, I’ve gone into Tools -> Options -> Tools For Unity and set «Exception Support» to «True». I’ve also enabled all types of exceptions in the Exception Settings panel. I am connecting the debugger to Unity using the «Attach to Unity» button. Breakpoints are working, but the debugger isn’t halting on Exceptions.

What do I need to do to get Unity/VS to actually halt on Exceptions?

Note: I’ve tried closing and re-opening both Unity and VS many times but that doesn’t make any difference.

asked Jan 15, 2016 at 2:05

user45623's user avatar

user45623user45623

7411 gold badge8 silver badges19 bronze badges

$endgroup$

0

$begingroup$

This documentation on the 2.0 Unity tools preview for VS implies you have to both enable Unity exception support via Tools -> Options -> Tools For Unity (setting «exception support» to true, as you’ve done) and enable the appropriate CLR exception masks in Visual Studio’s built-in exception settings window (check the box next to «Common Language Runtime Exceptions»).

For best result you may want to check and then un-check the CLR exceptions tick, as that will ensure all the exception subtypes are enabled to get started with.

Glorfindel's user avatar

Glorfindel

9641 gold badge9 silver badges16 bronze badges

answered Jan 15, 2016 at 17:38

$endgroup$

0

$begingroup$

I think, a quick solution, you can try: Write an error log in exception block of the code

Debug.LogError("Exception occured");

And before running the editor open console and hit Error Pause in the console log.
enter image description here

The game will pause as any error occurred in the console.

answered Jan 9, 2020 at 6:15

Muhammad Faizan Khan's user avatar

$endgroup$

$begingroup$

You may need to do a couple more things to get this working. In my case, I wanted Unity’s built-in Assertions to raise exceptions that would be caught by VS. I had to do the following to make this happen.

  1. Configure Unity’s Assert class to raise exceptions via Assert.raiseExceptions=true
  2. Add the specific type of Exception to VS’s exception settings window. (Right click, select Add, and input UnityEngine.Assertions.AssertionException)

answered Aug 29, 2018 at 14:22

LevitatingKestrel's user avatar

$endgroup$

3

You must log in to answer this question.

Not the answer you’re looking for? Browse other questions tagged

.

Мне было поручено создать файлы .DLL из файлов .cs из проекта Unity.

Обычно мы просто берем классы C # (файлы .cs), импортируем их в MonoDevelop и строим решение для создания файлов DLL, повторно импортируем DLL обратно в Unity и исправляем любые ссылки на скрипты. Но проект стал сложным, и мы использовали Spine2d для анимации.

Spine2D — это совершенно другая игра с мячом, к которой я не хочу прикасаться, и которую мы могли бы просто оставить как есть.

Но решение в MonoDevelop не может быть построено (и не создает библиотеки DLL), что вполне понятно, потому что оно имеет ссылки на Spine, который сам имеет ссылки на другие проекты и так далее, и так далее.

Есть ли способ заставить MonoDevelop просто создавать библиотеки DLL, независимо от ошибки, и просто доверять проекту Unity, чтобы исправить это?

2 ответа

Лучший ответ

Ошибки игнорировать нельзя. Вот почему они ошибки. Компилятор должен каким-то образом переводить код в IL, и без надлежащей зависимости он просто не знает, что испустить. Вам нужно добавить ссылки на необходимые зависимости, иначе проект не может скомпилироваться.

Единственный способ обойти это — убедиться, что нет ошибок времени компиляции. Например, вы можете определить интерфейсы, которые будут известны вашей DLL и реализованы в проекте Unity. Излишне говорить, что это может быть очень сложно, но если вам просто нужен простой адаптер, это может быть жизнеспособным.


2

Luaan
7 Ноя 2016 в 11:17

Одно решение:

Используйте в своей инъекции зависимостей dll, а затем используйте свои классы с позвоночником


0

OnionFan
7 Ноя 2016 в 11:08

Сложно сказать, какая тут конкретно проблема. Если у вас нет специфических запросов к Unity, требуюших новейшую версию, то можете просто удалить эту и установить последнюю 2020.* Несмотря на кажущуюся старость, она очень норм.

Если хочется пободаться с ошибками, то тут может быть много вариантов. Сперва на ум приходит возможность проблем с установкой:
1) Было мало памяти на диске и не всё установилось;
2) Некоторые целевые папки были защищены от записи правами учётных записей и туда тоже ничего не установилось;
3) В системе не найдена или недоступна требуемая DLL;
4) Антивирус вмешался в процесс установки редактора или вмешивается в процессе работы.
Но такие ошибки всегда показывают предупреждения и вы бы их не пропустили. Но я допускаю вероятность, что могут быть случаи и без видимых ошибок, поэтому лучше всё проверьте.

Думая о запросе входа в безопасный режим, на ум приходит невозможность юнити скомпилировать пустой проект, что может быть вызвано:
5) Недопустимыми символами в пути к проекту;
6) Нехваткой оперативной памяти;
7) Ошибкой настройки самого компилятора (например, неверный путь в переменных среды).
Опять же, всё руками проверить.

Не нулевая вероятность и проблем с самими пакетами, например:
8) Пакеты установились с ошибками или имеют ошибки в процессе работы.
Тут может помочь очистка кеша/реимпорт пакетов.

Может было что-то ещё, но я сходу не вспомню.

Понравилась статья? Поделить с друзьями:
  • Как игнорировать ошибку в excel
  • Как избавится от ошибки 403 forbidden
  • Как заставить любовницу мужа нервничать и совершать ошибки
  • Как игнорировать ошибки в питоне
  • Как избавится от ошибки 400