Ответ 1
Используйте 'Attach' в меню отладки MonoDevelop; вы должны иметь возможность подключиться к работающему процессу Unity таким образом. (Возможно, вам нужно будет убедиться, что соответствующий параметр включен в настройках Unity).
В настоящий момент, что я делаю, я открываю Unity
, дважды щелкаю по одному из тех сценариев, которые я написал, затем MonoDevelop
открывается, теперь мне нужно закрыть единство и в MonoDevelop
Я делаю Run >> Run with >> Unity Debugger
.
После этого Unity открывается, и когда я нажимаю кнопку воспроизведения в единстве, начинается сеанс отладки. Но только один раз. Если я остановлю этот сеанс в Unity
или MonoDevelop
, я должен повторить всю эту процедуру снова, что очень утомительно. Мне нужно открыть Unity, закрыть Unity (я должен закрыть его, потому что следующий шаг, который Run >> Run with >> Unity Debugger
, откроет единство, и если единство уже открыто, я получаю сообщение об ошибке, говоря, что только один экземпляр единства может открыть один проект при время).
Я спрашиваю:
Есть ли лучший рабочий процесс, который освободит меня от этого утомительного включения и выключения Unity, и каждый раз, когда я останавливаю сеанс отладки, я бы просто начал нормально, не выполняя эти утомительные повторения?
Спасибо.
Используйте 'Attach' в меню отладки MonoDevelop; вы должны иметь возможность подключиться к работающему процессу Unity таким образом. (Возможно, вам нужно будет убедиться, что соответствующий параметр включен в настройках Unity).
Знаете ли вы о окне консоли Unity? Вы можете открыть его из меню /Windows/Console. Он будет действовать как отладчик, предоставляющий вам ошибки и предупреждения как в процессе компиляции, так и во время выполнения. Если я не понял этот вопрос, дайте мне знать.
Другой способ отладки - использовать:
Debug.LogError("foo");
или
Debug.LogWarning("foo");
Еще одно замечание: вы можете фактически привязать объекты к Журналу. Это заставит редактор выделять объект на вопрос, если вы выполняете итерацию по списку GameObjects. то есть:.
Debug.LogWarning("this object broke", gameObject);
Если вы включите "Пауза ошибок" в окне консоли, игра автоматически приостанавливается при выполнении LogError. Но будьте осторожны, он будет приостанавливаться всякий раз, когда возникает ошибка.
UnityVS теперь официально входит в состав Microsoft и доступен как дополнение для vs 2010, 12 и 13. Здесь почтовый блог MSDN, связанный с различными версиями: http://blogs.msdn.com/b/visualstudio/archive/2014/07/29/visual-studio-tools-for-unity-1-9.aspx
В последнее время Microsoft Acquired SyntaxTree, создатель плагина UnityVS для Visual Studio, вскоре будет выпущена бесплатно. UnityVS является обязательным плагином для каждого разработчика Unity3D, благодаря его производительности и способности или отладке игр Unity3D в Visual Studio.
В MonoDevelop есть кнопка в верхней части окна, которая гласит: "Привязать к единству". Если вы сделаете это, прежде чем играть в свою сцену, любые точки останова, установленные в MonoDevelop, остановят там основной поток.
Если вы просто пытаетесь проверить значения, Debug.log(message) выводит данные непосредственно на консоль единиц.
Оба они могут использоваться в режиме обычного воспроизведения.
Лучший способ использования Debug.Log()
для отладки в Unity, если ваша проблема подходит для применения.
Я использую плагины UnityVS, которые могут отлаживать проекты Unity с помощью Visual Studio. Очень удобно.
У вас есть Google с UnityVS
Я всегда менял редактор по умолчанию script (единственные настройки → внешние инструменты → внешний редактор script) для визуальной студии. Это позволяет использовать точки останова и макросы препроцессора, чтобы упростить отладку. Когда вы хотите начать отладку, нажмите f5 в визуальной студии, чтобы подключить ее к единице, тогда играйте как обычно, и если точка останова поражена, визуальная студия берет верх.
Вам не нужно ничего менять, и вам не придется открывать и закрывать такие вещи, как сейчас.
Есть два способа дебюрования в единстве, когда один из них - Log, который является консолью в основном в Unity, а другой - Debugger, который поддерживает VS и Mono. Да, вы правы, его очень ужасный процесс, чтобы проверить точку отладки tha, что такое значение a и b и т.д. поэтому я считаю, что использовать только то, что лучше всего подходит для вас, я имею в виду, что вам не нужна точка отладки, просто знайте значение a и b, просто зарегистрируйте его. и когда есть необходимость в точке отладки, вы уже знаете метод.
Вы можете ознакомиться с помощью сообщества 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 не интегрируют кнопку "сделать это работать" раз и навсегда;)).
Вы можете использовать кнопку "Выполнить" (выглядит как кнопка воспроизведения в левом верхнем углу), чтобы подключиться к редактору Unity для отладки, но если вы не подключаетесь к Unity успешно таким образом, вы можете проверить, что соответствующий плагин включен в настройках Менеджера надстройки.
Окна: Инструменты > Менеджер надстроек > Unity > Поддержка Mono Soft Debugger для Unity
OSX: Unity > Менеджер надстроек > Unity > Поддержка Mono Soft Debugger для Unity
(Выберите и нажмите кнопку "Включить" ).
использовать debug.log( "Сообщение" ); для отладки
Что-то, что мне нравится делать, это сделать ярлыки для регистрации полезных данных в редакторе 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 отобразит кнопку меню для выполнения определенных действий.
С помощью Unity 5.5
инструментов Visual Studio встроены, вы можете присоединить единство и начать отладку одним нажатием
i.e после Edit > Preferences > External tools > External script editor > Visual studio
Самый простой способ отладки - использовать Debug.log(""); но это стоит вам вашей производительности, так как вы можете легче отлаживать?
ну вот ответ:
Чтобы начать отладку, нажимайте мышь до крайнего левого края редактора (рядом с номером строки), и появится красная точка, вы бы только что создали точку останова!
Теперь ничего не будет сделано, если теперь вы перейдете в Unity и нажмите кнопку воспроизведения в окне редактора, произойдет что-то замечательное...
В самом низу окна, если у вас открыто окно локалей (если нет, выберите "Просмотр" > "Отладка Windows" > "Локали" ), вы увидите все переменные, которые в настоящее время существуют в локальном экземпляре, и их значения в время попадания точки останова.
Чтобы продолжить выполнение приложений, просто нажмите кнопку "Воспроизвести" в MonoDevelop.
Ваш script продолжит выполнение (и редактор Unitys больше не будет заморожен). Конечно, в этом случае script снова попадет в точку останова на следующем кадре. Поэтому просто щелкните левой кнопкой мыши точку останова в MonoDevelop и снова нажмите кнопку Play, чтобы она снова не выполняла точку останова.
Вы можете делать с ним больше вещей, например:
С помощью контрольных точек вы можете заставить их остановить выполнение приложения при выполнении определенных условий. Например, представьте, что вы хотите проверить значения, когда переменная fSpeed достигает 10. Для этого нажмите кнопку "Стоп" в MonoDevelop и щелкните правой кнопкой мыши на точке останова, затем нажмите "Свойства точки останова".
Задайте условие "Разрыв, когда условие истинно", и установите "Условие выражения" на "fSpeed >= 10", а затем нажмите OK.
Повторно присоедините редактор к Unity и нажмите кнопку Play в Unity, когда условие будет выполнено, точка останова будет срабатывать и останавливать приложение.
Замечание об использовании контрольных точек состояния: они вызывают проблемы с производительностью, поскольку они должны проверять выражение при каждом запуске.
это должно быть лучше, чем debug.log(""); по крайней мере, если это то, что вы хотите.