RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 851061
Accepted
Dmitrii
Dmitrii
Asked:2020-07-06 17:59:38 +0000 UTC2020-07-06 17:59:38 +0000 UTC 2020-07-06 17:59:38 +0000 UTC

在 Unity 编辑器中单击时发送到脚本中的特定位置

  • 772

Unity 编辑器有方便的 Debug.Log 日志。除了他们向控制台打印一条消息之外,当您单击此消息时,您会直接重定向到脚本中的正确位置 - 调用此调试的位置。但是如果你想以某种方式包装这个方法并在那里添加事件时间,例如像这样

public static void LogError(this object obj, string message)
{     
        message += DateTime.Now.ToString();
        Debug.LogError(message);
}

然后在控制台中点击这样的调试将我们重定向到这个方法,我们的“包装器”。如何使补充 Debug.Log 方法成为可能,同时保留重定向到所需脚本行的功能?

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    nipercop
    2020-07-07T12:53:41Z2020-07-07T12:53:41Z

    您的问题有几个解决方案:

    1. 使用控制台增强资产(免费/专业版)
    2. 编写您自己的控制台窗口。

    好吧,第一个选项一切都清楚了,但是如果你想为自己创建一个带有二十一点和好东西的窗口,作为一个自尊的程序员。

    这是一个实现示例:

     public static void Log(object obj, string msg) {
        // берёт стактрейс вызова
        string stackTrace = UnityEngine.StackTraceUtility.ExtractStackTrace();
    
        // разделяем стактрейс на строки. символ '\n' олицетворяет переход на новую строку
        string[] row = stackTrace.Split('\n'); // метод Split('символ') разделяет строку на массив строк
    
        // берем трейс который вызвал данный метод Log. 
        // данное число "1" можно менять, в зависимости какой хотите скрипт выбрать их стактрейса
        // если полноценное консольное окно  делать, то тут уже через цикл пускать
        string trace = row[1]; //строка будет выглядеть так: "tester:ShowWarning() (at Assets\Scripts\tester.cs:26)"
    
        // далее попытаемся взять конкретный скрипт и открыть в редакторе скриптов
        // отрезаем всё лишнее, используя пробел между символами
        string filePathAndLine = trace.Split(' ')[2]; // строка будет выглядеть так: "Assets\Scripts\tester.cs:26)"
    
        // избавляемся от двоеточия
        string filePath = filePathAndLine.Split(':')[0];// строка будет выглядеть так: "Assets\Scripts\tester.cs"
    
        //  попутно записываем номер строки
        string lineString = filePathAndLine.Split(':')[1]; // строка будет выглядеть так: "26)" // затем необходимо удалить скобку
    
        // удаляем скобку. Можно было использовать Remove, но это всё зависит от вашего усмотрения
        string line = lineString.Split(')')[0];
    
        // парсим строку в число
        int lineNumber = int.Parse(line); 
    
        //загружаем объект чтобы потом его использовать
        UnityEngine.Object file = UnityEditor.AssetDatabase.LoadAssetAtPath<Object>(filePath);
    
        // берём в фокус скрипт (словно кликнули на него мышкой)
        UnityEditor.Selection.activeObject = file; // не обязательно
    
        // подсвечиваем объект желтым 
        UnityEditor.EditorGUIUtility.PingObject(file);// не обязательно
    
        // открываем скрипт в редакторе скриптов на определённом номере строки
        UnityEditor.AssetDatabase.OpenAsset(file, lineNumber);
    
    }
    

    希望这个回答对你有帮助,祝你好运!

    • 2

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5