下面展示 自定义文本,自动写入Log日志
。
using BehaviorDesigner.Runtime.Tasks.Movement;
using MR_LBS.Common;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class AndroidLogHelper : MonoBehaviour
{
public static AndroidLogHelper instance = null;
string datapath_Enemy;
string datapath_Pet;
string datapath_Animator;
string datapath_Error;
string datapath_EnemyCard;
/// <summary>
/// 文件夹
/// </summary>
private string folder_android;
private string file_Enemy = "Enemy.txt";
private string file_Pet = "Pet.txt";
private string file_Animator = "Animator.txt";
private string file_Error = "Erroe.txt";
private string file_EnemyCard = "EnemyCard.txt";
private void Awake()
{
instance = this;
}
private void Start()
{
folder_android = System.DateTime.Now.Day.ToString() + "日" + System.DateTime.Now.Hour.ToString() + "时" +
System.DateTime.Now.Minute.ToString() + "分";
if (Application.platform == RuntimePlatform.Android)
{
//判断是否打开Log日志
if (!UnityPhotonClient.Instance.openLog)
return;
DirectoryInfo dir = new DirectoryInfo(Application.persistentDataPath + "/" + folder_android);
dir.Create();
//文件夹内的文件指定
datapath_Enemy = Application.persistentDataPath + "/" + folder_android + "/" + file_Enemy;
datapath_Pet = Application.persistentDataPath + "/" + folder_android + "/" + file_Pet;
datapath_Animator = Application.persistentDataPath + "/" + folder_android + "/" + file_Animator;
datapath_Error = Application.persistentDataPath + "/" + folder_android + "/" + file_Error;
datapath_EnemyCard = Application.persistentDataPath + "/" + folder_android + "/" + file_EnemyCard;
}
else if (Application.platform == RuntimePlatform.WindowsEditor)
{
//判断是否打开Log日志
if (!UnityPhotonClient.Instance.openLog)
return;
DirectoryInfo dir = new DirectoryInfo("E:/" + folder_android);
if (dir.Exists)
{
dir.Delete(true);
}
dir.Create();
//文件夹内的文件指定
datapath_Enemy = "E:/" + folder_android + "/" + file_Enemy;
datapath_Pet = "E:/" + folder_android + "/" + file_Pet;
datapath_Animator = "E:/" + folder_android + "/" + file_Animator;
datapath_Error = "E:/" + folder_android + "/" + file_Error;
datapath_EnemyCard = "E:/" + folder_android + "/" + file_EnemyCard;
//Debug.LogError("LogHelper Start");
}
}
/// <summary>
/// Log 考虑DPS下释放的卡牌
/// </summary>
public void OutPutEnemyCardLog(string outputType, string cardName)
{
//判断是否打开Log日志
if (!UnityPhotonClient.Instance.openLog)
return;
FileInfo fileInfo = new FileInfo(datapath_EnemyCard);
if (!fileInfo.Exists)
{
writer = fileInfo.CreateText();
}
else
{
writer = fileInfo.AppendText();
}
//计算当前的时间
float time = /*180 -*/ BattleController.instance.battleTime;
var stringresult = string.Format("{0:D2}:{1:D2}", (int)time / 60, (int)time % 60);
//float y = 180 - x * 60;
//string timeString = x + "分" + y + "秒";
//writer.AutoFlush = true;
//以 行的方式写入
writer.WriteLine(outputType + cardName + "__时间是" + stringresult);
// 释放 流
writer.Close();
}
/// <summary>
/// 流 编辑器
/// </summary>
StreamWriter writer;
/// <summary>
/// 只负责写入,如果路径文件不存在则会创建一个新的文件
/// </summary>
private void WriteLine(string datapath, string sentence)
{
//判断是否打开Log日志
if (!UnityPhotonClient.Instance.openLog)
return;
FileInfo fileInfo = new FileInfo(datapath);
if (!fileInfo.Exists)
{
writer = fileInfo.CreateText();
}
else
{
writer = fileInfo.AppendText();
}
//计算当前的时间
float time = /*180 -*/ BattleController.instance.battleTime;
var stringresult = string.Format("{0:D2}:{1:D2}", (int)time / 60, (int)time % 60);
//float y = 180 - x * 60;
//string timeString = x + "分" + y + "秒";
//writer.AutoFlush = true;
//以 行的方式写入
writer.WriteLine(sentence + "__时间是" + stringresult);
// 释放 流
writer.Close();
在这里清空流的缓存,但是不关闭流,因为一直会用到
//writer.Flush();
}
/// <summary>
/// 宠物控制器的 Log 方法
/// </summary>
/// <param name="controlBase">传入的宠物控制器</param>
/// <param name="sentence">想要写的 Log 句子</param>
public void MonsterLog(MonsterControlBase controlBase,string sentence)
{
if (controlBase.Monster_P.Body.layer == LayerMask.NameToLayer("Pet"))
{
WriteLine(datapath_Pet, sentence);
}
else if (controlBase.Monster_P.Body.layer == LayerMask.NameToLayer("Enemy"))
{
WriteLine(datapath_Enemy, sentence);
}
}
/// <summary>
/// 技能控制器的 Log 方法
/// </summary>
/// <param name="subControl">传入的技能控制器</param>
/// <param name="sentence">想要写的 Log 句子</param>
public void MonsterLog(SkillSubControl subControl,string sentence)
{
if (subControl.owner_Body.layer == LayerMask.NameToLayer("Pet"))
{
WriteLine(datapath_Pet, sentence);
}
else if (subControl.owner_Body.layer == LayerMask.NameToLayer("Enemy"))
{
WriteLine(datapath_Enemy, sentence);
}
}
/// <summary>
/// 动画切换脚本的 Log 方法
/// </summary>
/// <param name="animator">传入的动画控制器</param>
/// <param name="sentence">想要 Log 的语句</param>
public void MonsterLog(Animator animator,string sentence)
{
WriteLine(datapath_Animator, sentence);
}
/// <summary>
/// 各种各样的错误日志的的信息,都写在这个文本中
/// </summary>
/// <param name="sentence"></param>
public void ErrorLog(string sentence)
{
WriteLine(datapath_Error, sentence);
}
}
自动记录log 日志效果如下: