纳金网
标题:
一个不用插件也能在手机上输出日志的插件?
[打印本页]
作者:
烟雨
时间:
2019-11-28 15:29
标题:
一个不用插件也能在手机上输出日志的插件?
来自:夏之末
这个脚本你在别的地方直接new这个类就可以用了,里边可以传递一些参数,当你不填写参数时它是默认的,参数可以是你想输出的话,输出的字体大小,以及一个回调,当你new这个类的时候,会自动生成一个带有Button组件的文本框,你点击这个UI后会关闭产生的文本框并执行你想调用的回调。这个脚本主要就是利用构造函数,举个例子就像Unity的GameObject一样,你可new一个空物体并且往里边传递它名字的参数。话不再多说了,贴上代码。
using System.Collections;
using System.Collections.Generic;
using UnityEngine.Events;
using UnityEngine.UI;
using UnityEngine;
using System;
public class LogError : MonoBehaviour
{
public LogError(string error = "游戏出现错误", int fontsize = 60, UnityAction MyEvent = null)
{
GameObject go = new GameObject("Log");
GameObject Canvas = GameObject.Find("Canvas");
if (Canvas == null)
{
Destroy(this);
return;
}
go.transform.SetParent(Canvas.transform);
go.transform.localPosition = Vector3.zero;
go.transform.localScale = Vector3.one;
RectTransform rectTransform = go.GetComponent<RectTransform>();
if (rectTransform == null)
{
rectTransform = go.AddComponent<RectTransform>();
}
Text text = go.AddComponent<Text>();
text.text = "error: " + error;
text.color = Color.red; ;
Font font = Font.CreateDynamicFontFromOSFont("OSFont", 11);
text.fontStyle = FontStyle.Normal;
rectTransform.sizeDelta = new Vector2(800, 200);
text.font = font;
text.alignment = TextAnchor.MiddleCenter;
text.fontSize = fontsize;
Button button = go.AddComponent<Button>();
if (MyEvent != null)
{
button.onClick.AddListener(MyEvent);
}
button.onClick.AddListener(() => { Destroy(go); Destroy(this); });
}
}
复制代码
作者:
745951224
时间:
2019-11-29 10:35
额,虽说目的是达到了。但是,
首先,作者怕是对日志有什么误解,这代码功能仅仅是弹出框啊,给用户看的。日志,这玩意不是写文件记录用于日后维护查看的嘛?
其次说说代码问题:
1、继承 MonoBehaviour是一种误导,本人极其不赞同把MonoBehaviour当做普通C#类去new,去处理。这样对于性能来说是浪费。MonoBehaviour本身里就有很多的东西,像这种功能类,直接写个C#类他不香吗?
2、动态的创建UI对象,且没做对象池优化以及对象UI扩展,并不适合在项目中实用
简单评定:代码用处几乎为0。不过能提供一个思路给新手吧
欢迎光临 纳金网 (http://rs.narkii.com/club/)
Powered by Discuz! X2.5