gpt4 book ai didi

c# - 统一将 Debug.log 作为 GUI 元素

转载 作者:行者123 更新时间:2023-12-05 01:38:00 25 4
gpt4 key购买 nike

我的程序当前在控制台中显示文本。

我希望在游戏窗口中显示此文本。

数据是网络请求的一部分。

是否有一种简单的方法可以将出现在控制台中的内容显示为 GUI 元素?

最佳答案

是的,您可以简单地添加一个回调,例如Application.logMessageReceivedThreaded

使用来自 this threadOnGUI 脚本扩展的 API 示例

// Put this on any GameObject in the scene
public class ExampleClass : MonoBehaviour
{
// Adjust via the Inspector
public int maxLines = 8;
private Queue<string> queue = new Queue<string>();
private string currentText = "";

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

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

void HandleLog(string logString, string stackTrace, LogType type)
{
// Delete oldest message
if (queue.Count >= maxLines) queue.Dequeue();

queue.Enqueue(logString);

var builder = new StringBuilder();
foreach (string st in queue)
{
builder.Append(st).Append("\n");
}

currentText = builder.ToString();
}

void OnGUI()
{
GUI.Label(
new Rect(
5, // x, left offset
Screen.height - 150, // y, bottom offset
300f, // width
150f // height
),
currentText, // the display text
GUI.skin.textArea // use a multi-line text area
);
}
}

总的来说:OnGUI 是一种遗留物,您真的应该只将它用于调试。

但是您基本上也可以使用相同的脚本,例如一个UI.Text组件,而不是使用 OnGUI 将文本分配给它。

脚本基本上看起来是一样的但是有一个

public Text text;

而不是 OnGUI 会直接做

text.text = builder.ToString();

关于c# - 统一将 Debug.log 作为 GUI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60228993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com