Unity 日志保存文本

Untiy 提供了日志回调事件 Application.logMessageReceivedThreaded

监听这个事件,即可把文件保存文本文件了。

using UnityEngine;
using System.IO;
using System.Text;
using System;

public class LogManager : MonoBehavior
{
    /// <summary>
    /// 日志流
    /// </summary>
    private StreamWriter logStream;

    private readonly object _keyObj = new object();

    private string logPath
    {
        get
        {
            return Application.persistentDataPath + "/game.log";
        }
    }

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

    private void Start()
    {
        try
        {
            logStream = new StreamWriter(logPath, false, Encoding.UTF8);
        }
        catch { }

    }

    protected override void OnDestroy()
    {
        base.OnDestroy();
        Application.logMessageReceivedThreaded -= HandleLog;
    }

    private readonly StringBuilder logBuilder = new StringBuilder();

    private void HandleLog(string logString, string stackTrace, LogType type)
    {
        if (logStream == null)
            return;

        lock (_keyObj)
        {
            logBuilder.Clear();
            logBuilder.Append(string.Format("{0}[{1}]:{2}   trace:{3}",DateTime.Now.ToString("[yyyy-HH-dd mm:hh:ss]"),type,logString,stackTrace));
            logStream.WriteLine(logBuilder.ToString());
            logStream.Flush();
        }

    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity WebGL是一种用于在Web浏览器中运行Unity游戏和应用程序的技术。在Unity中,我们可以通过使用JavaScript来实现在Web上写入文本的功能。 首先,我们需要在Unity中创建一个脚本来处理写入文本的逻辑。我们可以将下面的代码段添加到我们的脚本中: ```csharp using UnityEngine; using UnityEngine.UI; public class WriteText : MonoBehaviour { public Text textObject; //需要显示文本的UI Text对象 public void Write(string inputText) { textObject.text = inputText; //将输入的文本赋值给文本对象的text属性,即显示在UI上 } } ``` 在Unity中,我们还需要创建一个Canvas和Text UI对象来显示文本。我们可以在Unity编辑器中创建一个UI Text对象,并将其添加到Canvas对象中。然后将Text对象分配给WriteText脚本的textObject属性。 接下来,我们需要在JavaScript中调用Unity的写入文本功能。我们可以使用以下代码段: ```javascript function CallWriteText(inputText) { unityInstance.SendMessage("YourGameObjectName", "Write", inputText); } ``` 在上面的代码中,"YourGameObjectName"是Unity中存储WriteText脚本的GameObject的名称。通过SendMessage函数,我们可以向Unity发送一个写入文本的消息,这将触发Unity中WriteText脚本的Write方法,并将传递的文本输入。 最后,我们需要在Web中编写一个HTML页面来加载Unity WebGL应用程序,并将写入文本的功能与JavaScript函数关联。具体步骤可以参考Unity的文档或教程。 通过以上步骤,我们可以在Unity WebGL中实现写入文本的功能,然后通过JavaScript调用这个功能,并在Web页面上更新显示的文本内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值