在Game窗口上显示Consle

该脚本是一个UnityMonoBehaviour组件,用于在游戏运行时显示Console日志。它接收并处理Application.logMessageReceived事件,分割过长的log字符串,限制存储的行数和每行的最大长度,并在OnGUI阶段显示在屏幕上。
摘要由CSDN通过智能技术生成

在空物体上挂在Consle脚本,可以在Game运行的时候看到关于consle的代码

using System.Collections;
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());
    }
}
好的,这里是一个简单的开灯关灯游戏设计,并在日志窗口打印服务状态信息的示例代码: ```python import logging # 创建日志记录器 logger = logging.getLogger("light_game") logger.setLevel(logging.INFO) # 创建控制台处理程序 console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) # 创建日志格式器 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) # 将处理程序添加到记录器 logger.addHandler(console_handler) # 模拟灯泡 class LightBulb: def __init__(self): self._is_on = False def turn_on(self): self._is_on = True logger.info("灯泡已打开") def turn_off(self): self._is_on = False logger.info("灯泡已关闭") # 游戏类 class LightGame: def __init__(self): self._light_bulb = LightBulb() self._is_running = False def start(self): self._is_running = True logger.info("游戏已开始") def stop(self): self._is_running = False logger.info("游戏已停止") def toggle_light(self): if self._is_running: if self._light_bulb._is_on: self._light_bulb.turn_off() else: self._light_bulb.turn_on() else: logger.warning("请先启动游戏") # 测试游戏 game = LightGame() game.toggle_light() # 输出警告信息:请先启动游戏 game.start() # 输出状态信息:游戏已开始 game.toggle_light() # 输出信息:灯泡已打开 game.toggle_light() # 输出信息:灯泡已关闭 game.stop() # 输出状态信息:游戏已停止 ``` 在上面的代码中,我们使用 Python 的 logging 模块创建了一个名为 "light_game" 的日志记录器,并将日志级别设置为 INFO。然后,我们创建了一个控制台处理程序,将其日志级别也设置为 INFO,并将其添加到记录器。接下来,我们创建了一个 LightBulb 类来模拟灯泡,并在其中定义了打开和关闭灯泡的方法。最后,我们创建了一个 LightGame 类来管理游戏,并在其中定义了启动、停止和切换灯泡状态的方法。在游戏类中,我们使用记录器来输出服务状态信息,例如游戏已开始、游戏已停止、灯泡已打开和灯泡已关闭等。 在测试游戏时,我们首先尝试切换灯泡状态,但此时游戏尚未启动,因此会输出警告信息。然后,我们启动游戏并切换灯泡状态,此时会输出灯泡已打开的信息。接着,我们再次切换灯泡状态,此时会输出灯泡已关闭的信息。最后,我们停止游戏,并输出游戏已停止的信息。所有的状态信息都会显示在日志窗口中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值