Unity はゲーム内にコンソール コンテンツを出力します

Unityではたまに確認する箇所を折るのが面倒なので、コンテンツデータの出力などにDebug.Logを利用する人も多いと思います。

コード操作のデータや内容を確認するのに便利です

ただし、パッケージ化されたプロジェクトはコンソールのコンテンツを表示できないため、多くの問題が発生しますが、Unity 上ではうまく動作する場合もあります。

しかし、梱包したとたんにバグが出始めて確認できなくなりました。  

このような状況では、コンソールのコンテンツをゲーム内に出力するのが最適です。

コード部分

名前空間は次のとおりです

using System.Collections.Generic;
using UnityEngine;

 コード部分

public class ConsoleToSceen : MonoBehaviour
{
    const int maxLines = 50;
    const int maxLineLength = 120;
    private string _logStr = "";

    private readonly List<string> _lines = new List<string>();
    void OnEnable() { Application.logMessageReceived += Log; }
    void OnDisable() { Application.logMessageReceived -= Log; }
    void Update() { }

    public void Log(string logString, string stackTrace, LogType type)
    {
        foreach (var line in logString.Split('\n'))
        {
            if (line.Length <= maxLineLength)
            {
                _lines.Add(line);
                continue;
            }
            var lineCount = line.Length / maxLineLength + 1;
            for (int i = 0; i < lineCount; i++)
            {
                if ((i + 1) * maxLineLength <= line.Length)
                {
                    _lines.Add(line.Substring(i * maxLineLength, maxLineLength));
                }
                else
                {
                    _lines.Add(line.Substring(i * maxLineLength, line.Length - i * maxLineLength));
                }
            }
        }
        if (_lines.Count > maxLines)
        {
            _lines.RemoveRange(0, _lines.Count - maxLines);
        }
        _logStr = string.Join("\n", _lines);
    }

    void OnGUI()
    {
        GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity,
           new Vector3(Screen.width / 1200.0f, Screen.height / 800.0f, 1.0f));
        GUI.Label(new Rect(10, 10, 800, 370), _logStr, new GUIStyle());
    }
}

プレハブをマウントするだけ

 

おすすめ

転載: blog.csdn.net/q1295006114/article/details/130347813