如何将 Unity 的 Debug.Log 打印到屏幕/GUI?

xjc*_*jcl 0 c# logging unity-game-engine

当您在 Unity IDE 内部运行项目时,您可以在单独的控制台小部件中看到日志消息。但是,我正在开发一款多人游戏,因此我需要至少在 2 个以上客户端上进行测试,这需要在 IDE 之外进行独立构建,因此我无法再看到日志消息。有什么方法可以在实际屏幕或 GUI 上打印日志吗?

xjc*_*jcl 14

添加它C# script并将其附加到场景中的新游戏对象:

using UnityEngine;
using System.Collections;

public class ZzzLog : MonoBehaviour
{
    uint qsize = 15;  // number of messages to keep
    Queue myLogQueue = new Queue();

    void Start() {
        Debug.Log("Started up logging.");
    }

    void OnEnable() {
        Application.logMessageReceived += HandleLog;
    }

    void OnDisable() {
        Application.logMessageReceived -= HandleLog;
    }

    void HandleLog(string logString, string stackTrace, LogType type) {
        myLogQueue.Enqueue("[" + type + "] : " + logString);
        if (type == LogType.Exception)
            myLogQueue.Enqueue(stackTrace);
        while (myLogQueue.Count > qsize)
            myLogQueue.Dequeue();
    }

    void OnGUI() {
        GUILayout.BeginArea(new Rect(Screen.width - 400, 0, 400, Screen.height));
        GUILayout.Label("\n" + string.Join("\n", myLogQueue.ToArray()));
        GUILayout.EndArea();
    }
}
Run Code Online (Sandbox Code Playgroud)

该脚本改编自此处,但已进行了很多清理,角已从左上角更改为右上角,并且添加了队列大小的新变量,因此消息不会离开屏幕:

在此输入图像描述