运行时关闭unity的Debug.Log

Debug.unityLogger.logEnabled = false(目前我在unity2018版本中用到)

在开发Unity的时候,在输出log的时候大家都会采用Debug.log()的方式来输出Log,但是游戏发布的时候这样的Log是不能关闭的,在用户手机运行产生一堆LOG也不是啥好事,一定要关闭才行、主要是unity官方也没有提供直接关闭的方法。

既然官方没提供方法,那么我们就得自己想办法。于是我写了一个类把Debug.log包了一层。

C#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

using UnityEngine;

using System.Collections;

 

public class Debuger  {

 

static public bool EnableLog = false;

static public void Log(object message)

{

Log(message,null);

}

static public void Log(object message, Object context)

{

if(EnableLog)

{

Debug.Log(message,context);

}

}

static public void LogError(object message)

{

LogError(message,null);

}

static public void LogError(object message, Object context)

{

if(EnableLog)

{

Debug.LogError(message,context);

}

}

static public void LogWarning(object message)

{

LogWarning(message,null);

}

static public void LogWarning(object message, Object context)

{

if(EnableLog)

{

Debug.LogWarning(message,context);

}

}

}

 这样我程序在输出Log的时候,我就不调用Debug.Log()了,我使用我新写的这个类。

C#

1

2

3

4

5

void Start ()

{

Debuger.EnableLog = true;

Debuger.Log("雨松MOMO");

}

 

 但是这样问题又来了,因为我如果直接这样写的话,如下图所示,当我输出Log以后,我在Console窗口中双击Log 这时候代码会定位在Debuger这个类的Log方法,这太麻烦了我需要定位在调用Debuger.log()的方法上。

 

为了解决这个问题,我们可以把Debuger类做成一个dll,在终端里面输入如下代码 。。

 

1

mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs

 如果你要把多个.cs文件做成一个dll的话,那么在终端里用空格把你的.cs文件分开即可,于是我在终端里面输入,参数 就是我的cs的完整路径。

1

mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library /Users/MOMO/test13/Assets/Debuger.cs

执行完毕后,会自动的在你脚本的平级路径下生成一个同名的dll文件。 在把Debuger.cs文件删除,保留Debuger.dll就可以了。

 

 

如果你的版本正式发布, 你只需找一个合适的地方调用enableLog = true就可以。

 

C#

1

Debuger.EnableLog = true;

开始我想的是在Debuger类里面直接用 #if define这样的标签来做,后来我发现很多问题出现在正式版本里,一旦使用预定义标签编译那么除非重新打包不然是觉对看不到LOG。所以干脆就直接用一个静态变量来标记是否打开Log方便。这样可以让服务端做一个密令一类的东西, 正式版也能让客户端把LOG打开。。

如果你确定你的项目不会出问题,不需要运行时产生log.那么最好使用Conditional, 参数就是条件编译的预定义标签,下面的DEBUG 就是在unity projectsetting 里面 声明 预定义标签, 当然你也可以自己去定义这些标签。这样在调用方法的时候就不会去执行 方法体的内容。。 

需要引入头文件

using System.Diagnostics;
using System;

 

C#

1

2

3

4

5

[Conditional ("DEBUG")]

static public void Log(object message, Object context)

{

Debug.Log(message,context);

}

 

最后我把这个简单的DLL上传一下,大家下载下来就可以直接用了。。或者你也可以按照本文的方法自己来封装。

下载地址: http://pan.baidu.com/s/1ntyoEF3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 如果 Unity 中的 `Debug.Log` 方法无法将日志信息输出到控制台或日志文件中,可能是以下原因之一: 1. 该语句在代码中未被执行。请确保在代码中调用了 `Debug.Log` 方法,并且该语句被执行。 2. 在 Unity 编辑器中,您可能已经禁用了控制台输出。请确保在编辑器的 Console 窗口中选择了“All”选项卡,以查看所有日志输出。如果您选择了“Error”或“Warning”选项卡,那么除了错误或警告消息以外的其他消息将不会输出。 3. 在构建项目时,您可能已经禁用了日志输出。在构建项目时,请确保在“Player Settings”中的“Other Settings”下,将“Scripting Define Symbols”设置为“UNITY_EDITOR”。这将确保在构建的应用程序中,`Debug.Log` 方法将被正确执行并输出日志信息。 希望这些解决方法能够帮助您解决 `Debug.Log` 无法输出日志的问题。 ### 回答2: 在使用Unity进行游戏开发时,遇到Unitydebug.log打印不出来的问题,通常有以下几个原因导致。 首先,检查是否在正确的位置调用了Debug.Log()。这个函数需要在脚本中调用,如果没有被正确的调用,那么打印信息自然是无法输出的。应该检查一下调用Debug.Log()的语句是否正确、是否在需要的位置被调用。 其次,检查是否在Console中正确配置了过滤器。在Unity的控制台中,我们需要使用过滤器来确定我们需要查看的日志。确保已经选中了正确的日志过滤信息(比如点击Error或Warning等等),如果我们没有正确设置过滤器,那么我们的日志信息就有可能和我们期望的不同。 此外,还需要确保在打开编辑器的“Console”窗口时,我们选中的是正确的日志类型。这个很重要,如果我们没有选中正确的日志类型,我们的日志信息将不会出现在控制台中。 最后,如果以上步骤都没解决问题,我们就需要检查一下我们的Unity版本和编译环境是否正常。有时候,一些与我们开发环境相关的问题会影响到日志打印信息的输出。 总之,Unity debug.log打印不出来通常是由问题出在调用的位置,日志过滤器配置不正确,控制台没有选中正确的日志类型,或开发环境存在其他问题所致。通过逐一排除这些问题,我们可以找到问题所在,为日后进行Unity开发提供更好的基础。 ### 回答3: 关于Unity Debug.Log无法打印输出的问题,可能的原因如下: 1.代码没有执行到打印语句 首先要确认代码是否执行到了需要打印输出的语句,可以在需要打印输出的语句前加上一句Debug.Log("这里执行了吗?")来检验。 2.日志级别设置为错误或警告 在Unity的编辑器里,可以在菜单栏选择”Edit”>”Project Settings”>”Console”打开控制台设置。设置里有三个可选项:Info、Warnings、Errors。如果设置为Warnings或Errors,则Debug.Log打印的输出内容将不会显示。需要将日志级别改为Info。 3.屏蔽了输出信息 在编辑器里的控制台面板上,右上角有一个下拉箭头。如果勾选了Filters中的某一个或多个选项,则打印出来的内容可能被屏蔽了。需要将屏蔽选项去掉或重新设置过滤器。 4.开启了调试器 如果在Unity中开启了调试器,可能会导致在代码运行时无法使用Debug.Log输出信息。此时可以尝试关闭调试器,然后重新运行代码。 5.使用了错误的日志命令 Unity中还有类似Debug.LogWarning和Debug.LogError的命令,如果一不小心写成了这些命令,打印输出的信息将不同于Debug.Log,需要根据具体场景使用正确的日志命令。 以上是一些可能导致Unity Debug.Log无法打印输出的原因,可以根据具体情况逐一排查。另外,如果无论如何也无法打印输出,可以尝试在代码中使用兼容其他编程语言的打印输出命令,例如Console.WriteLine等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值