Смешивание UnityEngine.Debug и System.Diagnostics.Debug - PullRequest
0 голосов
/ 29 января 2019

Я присоединяю отладчик Visual Studio к Unity3D для отладки своего кода.

Я бы хотел

  • выводить сообщение журнала на консоль Unity
  • , а также нарушить Visual Studio в случае исключения.Например, вот так ...

    Shader nLaserShader = Shader.Find ("Частицы / Добавка");if (nLaserShader == null) {UnityEngine.Debug.Log ("Нет лазерного шейдера! \ n");System.Diagnostics.Debugger.Break ();}

Мне нужно использовать пространство имен UnityEngine, иначе VS не скомпилирует мой код и скажет, что Debug.Log неоднозначен.

Есть ли способ избежатьпечатать полные пространства имен?

1 Ответ

0 голосов
/ 29 января 2019

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

using diag = System.Diagnostics;

Позволит вам позвонить System.Diagnostics.Debugger.Break(), просто набрав diag.Debbuger.Break();, и в то же время вы сможете звонить Debug.Log(), как вы используетеto.

using UnityEngine;
using diag = System.Diagnostics;

public class AmbiguousNamespace: MonoBehaviour
{
    void Start()
    {
        GameObject foo = GameObject.Find("bar");
        if (foo == null)
        {       
            Debug.Log("failed to find bar!");
            diag.Debugger.Break();
        }
    }
}

Теперь, если вы не хотите использовать пространства имен, так как это может скрыть то, какое пространство имен вы используете, но все же хотите иметь возможность сэкономить некоторое время, не вводя всю систему.Diagno ... blablabla Вы также можете взглянуть на создание пользовательского фрагмента для него.

Это позволит вам установить для него ключевое слово и выполнить автозаполнение с помощью табуляции.Например, вы можете создать фрагмент "sddb", который автоматически заполняется до System.Diagnostics.Debbuger.Break(); при нажатии на вкладку.который я всегда нахожу хорошим посредником между удобочитаемостью и отсутствием необходимости каждый раз печатать длинные слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...