纳金网

标题: 一个不用插件也能在手机上输出日志的插件? [打印本页]

作者: 烟雨    时间: 2019-11-28 15:29
标题: 一个不用插件也能在手机上输出日志的插件?
来自:夏之末

这个脚本你在别的地方直接new这个类就可以用了,里边可以传递一些参数,当你不填写参数时它是默认的,参数可以是你想输出的话,输出的字体大小,以及一个回调,当你new这个类的时候,会自动生成一个带有Button组件的文本框,你点击这个UI后会关闭产生的文本框并执行你想调用的回调。这个脚本主要就是利用构造函数,举个例子就像Unity的GameObject一样,你可new一个空物体并且往里边传递它名字的参数。话不再多说了,贴上代码。
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine.Events;
  4. using UnityEngine.UI;
  5. using UnityEngine;
  6. using System;

  7. public class LogError : MonoBehaviour
  8. {
  9.     public LogError(string error = "游戏出现错误", int fontsize = 60, UnityAction MyEvent = null)
  10.     {
  11.         GameObject go = new GameObject("Log");
  12.         GameObject Canvas = GameObject.Find("Canvas");
  13.         if (Canvas == null)
  14.         {
  15.             Destroy(this);
  16.             return;
  17.         }
  18.         go.transform.SetParent(Canvas.transform);
  19.         go.transform.localPosition = Vector3.zero;
  20.         go.transform.localScale = Vector3.one;
  21.         RectTransform rectTransform = go.GetComponent<RectTransform>();
  22.         if (rectTransform == null)
  23.         {
  24.             rectTransform = go.AddComponent<RectTransform>();
  25.         }
  26.         Text text = go.AddComponent<Text>();
  27.         text.text = "error: " + error;
  28.         text.color = Color.red; ;
  29.         Font font = Font.CreateDynamicFontFromOSFont("OSFont", 11);
  30.         text.fontStyle = FontStyle.Normal;
  31.         rectTransform.sizeDelta = new Vector2(800, 200);
  32.         text.font = font;
  33.         text.alignment = TextAnchor.MiddleCenter;
  34.         text.fontSize = fontsize;
  35.         Button button = go.AddComponent<Button>();
  36.         if (MyEvent != null)
  37.         {
  38.             button.onClick.AddListener(MyEvent);
  39.         }
  40.         button.onClick.AddListener(() => { Destroy(go); Destroy(this); });
  41.         
  42.     }
  43. }
复制代码

作者: 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