Вывод debug - лога в консоль приложения

Программирование на Юнити.

Вывод debug - лога в консоль приложения

Сообщение bablorub 04 мар 2010, 15:18

Хочу поделиться сделанным недавно открытием. Долго искал как вывести весь лог, который пишется в консоли едитора в приложении, например Веб. Оказалось это довольно просто с помощью функции Application.LogCallback.
Выкладываю пример скрипта, с помощью которого по нажатии Ctrl + ` вылезает консоль со всеми логами приложения. Для удобства я использовал свой скин GUI чтобы вылезал белый текст на черном фоне. иначе ничего не видно было. этот скрипт можно прицепить на любой ГО в сцене и при нажатии клавbш будет вылезать консоль.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Console : MonoBehaviour {
    private bool consoleishidden;
    private string output;
    private string stack;
    public GUISkin consoleskin;
    private Vector2 scroll;

        void Start () {
       
        }
        void Update () {
              Application.RegisterLogCallback(HandleLog);
        if (Input.GetKeyDown("`") && Input.GetKey("left ctrl"))
        {
            ShowHideConsole();
        }
        }
    void OnGUI()
    {
        GUI.skin = consoleskin;
        GUI.depth = -10000;
        if (consoleishidden)
        {
            ShowConsole();
        }
    }
    void ShowHideConsole()
    {
        if (consoleishidden)
        {
            consoleishidden = false;
        }
        else
        {
            consoleishidden = true;
        }
    }
    void ShowConsole()
    {
        GUILayout.BeginArea(new Rect(0,5,Screen.width,Screen.height/2));
        scroll = GUILayout.BeginScrollView(scroll);
        GUILayout.Label(output);
        GUILayout.EndScrollView();
        GUILayout.EndArea();
    }

    void OnEnable()
    {
        Application.RegisterLogCallback(HandleLog);
    }

    void HandleLog(string logString, string stackTrace, LogType type)
    {
        output +=type+": " + logString+"\n";
        stack += stackTrace;
        scroll.y = 10000000000;
    }
}
 
Последний раз редактировалось bablorub 04 мар 2010, 16:58, всего редактировалось 2 раз(а).
Аватара пользователя
bablorub
UNец
 
Сообщения: 8
Зарегистрирован: 12 янв 2010, 12:27
Откуда: Питер
  • ICQ

Re: Вывод debug - лога в консоль приложения

Сообщение Neodrop 04 мар 2010, 15:45

Во дела... Никогда даже внимания на эту функцию не обращал (Application.RegisterLogCallback)
Век живи, век учись... :-?

(3A4OT)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вывод debug - лога в консоль приложения

Сообщение Sergion 04 мар 2010, 16:52

Шикарно (3A4OT)
Аватара пользователя
Sergion
Админ
 
Сообщения: 116
Зарегистрирован: 20 мар 2009, 20:51
Откуда: Москва


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9