查看: 1346|回复: 1
打印 上一主题 下一主题

[其他] 一个不用插件也能在手机上输出日志的插件?

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-11-28 15:29:07 |只看该作者 |倒序浏览
来自:夏之末

这个脚本你在别的地方直接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. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

5

主题

7

听众

2429

积分

中级设计师

Rank: 5Rank: 5

纳金币
149
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2019-11-29 10:35:24 |只看该作者
额,虽说目的是达到了。但是,
首先,作者怕是对日志有什么误解,这代码功能仅仅是弹出框啊,给用户看的。日志,这玩意不是写文件记录用于日后维护查看的嘛?
其次说说代码问题:
1、继承 MonoBehaviour是一种误导,本人极其不赞同把MonoBehaviour当做普通C#类去new,去处理。这样对于性能来说是浪费。MonoBehaviour本身里就有很多的东西,像这种功能类,直接写个C#类他不香吗?
2、动态的创建UI对象,且没做对象池优化以及对象UI扩展,并不适合在项目中实用

简单评定:代码用处几乎为0。不过能提供一个思路给新手吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-12-2 18:54 , Processed in 0.086994 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部