Подтвердить что ты не робот

Отладка с единством

В настоящий момент, что я делаю, я открываю Unity, дважды щелкаю по одному из тех сценариев, которые я написал, затем MonoDevelop открывается, теперь мне нужно закрыть единство и в MonoDevelop Я делаю Run >> Run with >> Unity Debugger.

После этого Unity открывается, и когда я нажимаю кнопку воспроизведения в единстве, начинается сеанс отладки. Но только один раз. Если я остановлю этот сеанс в Unity или MonoDevelop, я должен повторить всю эту процедуру снова, что очень утомительно. Мне нужно открыть Unity, закрыть Unity (я должен закрыть его, потому что следующий шаг, который Run >> Run with >> Unity Debugger, откроет единство, и если единство уже открыто, я получаю сообщение об ошибке, говоря, что только один экземпляр единства может открыть один проект при время).

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

4b9b3361

Ответ 1

Используйте 'Attach' в меню отладки MonoDevelop; вы должны иметь возможность подключиться к работающему процессу Unity таким образом. (Возможно, вам нужно будет убедиться, что соответствующий параметр включен в настройках Unity).

Ответ 2

Знаете ли вы о окне консоли Unity? Вы можете открыть его из меню /Windows/Console. Он будет действовать как отладчик, предоставляющий вам ошибки и предупреждения как в процессе компиляции, так и во время выполнения. Если я не понял этот вопрос, дайте мне знать.

Ответ 3

Другой способ отладки - использовать:

Debug.LogError("foo");

или

Debug.LogWarning("foo"); 

Еще одно замечание: вы можете фактически привязать объекты к Журналу. Это заставит редактор выделять объект на вопрос, если вы выполняете итерацию по списку GameObjects. то есть:.

Debug.LogWarning("this object broke", gameObject);

Если вы включите "Пауза ошибок" в окне консоли, игра автоматически приостанавливается при выполнении LogError. Но будьте осторожны, он будет приостанавливаться всякий раз, когда возникает ошибка.

Ответ 5

В последнее время Microsoft Acquired SyntaxTree, создатель плагина UnityVS для Visual Studio, вскоре будет выпущена бесплатно. UnityVS является обязательным плагином для каждого разработчика Unity3D, благодаря его производительности и способности или отладке игр Unity3D в Visual Studio.

http://unityvs.com/

Ответ 6

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

Если вы просто пытаетесь проверить значения, Debug.log(message) выводит данные непосредственно на консоль единиц.

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

Ответ 7

Лучший способ использования Debug.Log() для отладки в Unity, если ваша проблема подходит для применения.

Ответ 8

Я использую плагины UnityVS, которые могут отлаживать проекты Unity с помощью Visual Studio. Очень удобно.

У вас есть Google с UnityVS

Ответ 9

Я всегда менял редактор по умолчанию script (единственные настройки → внешние инструменты → внешний редактор script) для визуальной студии. Это позволяет использовать точки останова и макросы препроцессора, чтобы упростить отладку. Когда вы хотите начать отладку, нажмите f5 в визуальной студии, чтобы подключить ее к единице, тогда играйте как обычно, и если точка останова поражена, визуальная студия берет верх.

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

Ответ 10

Есть два способа дебюрования в единстве, когда один из них - Log, который является консолью в основном в Unity, а другой - Debugger, который поддерживает VS и Mono. Да, вы правы, его очень ужасный процесс, чтобы проверить точку отладки tha, что такое значение a и b и т.д. поэтому я считаю, что использовать только то, что лучше всего подходит для вас, я имею в виду, что вам не нужна точка отладки, просто знайте значение a и b, просто зарегистрируйте его. и когда есть необходимость в точке отладки, вы уже знаете метод.

Ответ 11

Вы можете ознакомиться с помощью сообщества MS Visual Studio и получить интеграцию Unity, которую они также предоставляют на своем веб-сайте. Я недавно попробовал, и это здорово, вы получаете довольно полную функциональность отладки, используя одну из лучших доступных IDE. Соединившись с Unity, вы можете получить отличные повышения производительности, а не только с точки зрения возможностей отладки, но и с точки зрения набора функций.

Если вы хотите это проверить, вот ссылка на версию среды IDE сообщества: https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx

Здесь также есть ссылка на объединенное объединение Unity: https://www.visualstudio.com/features/unitytools-vs

Надеюсь, что это поможет, один из разработчиков превратил меня из Mono, и, честно говоря, я не мог бы быть счастливее с этой настройкой (если только некоторые IDE не интегрируют кнопку "сделать это работать" раз и навсегда;)).

Ответ 12

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

Окна: Инструменты > Менеджер надстроек > Unity > Поддержка Mono Soft Debugger для Unity

OSX: Unity > Менеджер надстроек > Unity > Поддержка Mono Soft Debugger для Unity

(Выберите и нажмите кнопку "Включить" ).

Ответ 13

использовать debug.log( "Сообщение" ); для отладки

Ответ 14

Что-то, что мне нравится делать, это сделать ярлыки для регистрации полезных данных в редакторе Unity. Например, запишите текущее состояние всех моих активных достижений.

[MenuItem("My Game/Runtime debug/Achievement states")]
public static void LogAchievementStates ()
{
    foreach (AchievementState achievementState in Data.achievementStates)
    {
        Debug.Log ("Achievement " + achievementState.name + " is at " + achievementState.completion + "%");
    }
}

Выполнение этого в редакторе script отобразит кнопку меню для выполнения определенных действий.

Ответ 15

С помощью Unity 5.5 инструментов Visual Studio встроены, вы можете присоединить единство и начать отладку одним нажатием

i.e после Edit > Preferences > External tools > External script editor > Visual studio

Ответ 16

Самый простой способ отладки - использовать Debug.log(""); но это стоит вам вашей производительности, так как вы можете легче отлаживать?

ну вот ответ:

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

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

введите описание изображения здесь

В самом низу окна, если у вас открыто окно локалей (если нет, выберите "Просмотр" > "Отладка Windows" > "Локали" ), вы увидите все переменные, которые в настоящее время существуют в локальном экземпляре, и их значения в время попадания точки останова.

Чтобы продолжить выполнение приложений, просто нажмите кнопку "Воспроизвести" в MonoDevelop.

Ваш script продолжит выполнение (и редактор Unitys больше не будет заморожен). Конечно, в этом случае script снова попадет в точку останова на следующем кадре. Поэтому просто щелкните левой кнопкой мыши точку останова в MonoDevelop и снова нажмите кнопку Play, чтобы она снова не выполняла точку останова.

Вы можете делать с ним больше вещей, например:

С помощью контрольных точек вы можете заставить их остановить выполнение приложения при выполнении определенных условий. Например, представьте, что вы хотите проверить значения, когда переменная fSpeed ​​достигает 10. Для этого нажмите кнопку "Стоп" в MonoDevelop и щелкните правой кнопкой мыши на точке останова, затем нажмите "Свойства точки останова".

введите описание изображения здесь

Задайте условие "Разрыв, когда условие истинно", и установите "Условие выражения" на "fSpeed >= 10", а затем нажмите OK.

Повторно присоедините редактор к Unity и нажмите кнопку Play в Unity, когда условие будет выполнено, точка останова будет срабатывать и останавливать приложение.

Замечание об использовании контрольных точек состояния: они вызывают проблемы с производительностью, поскольку они должны проверять выражение при каждом запуске.

это должно быть лучше, чем debug.log(""); по крайней мере, если это то, что вы хотите.