封装Debug.Log 游戏发布关闭 Log 减少性能消耗
来源:互联网 发布:php sql注入 编辑:程序博客网 时间:2024/06/09 16:43
在游戏发布时,有很多东西需要进行优化 ,消耗性能的东西 能减少就减少。
UnityEngine.Debug.Log 是很消耗性能的操作,即使我们选择的是Release 版本发布,这个函数仍然会执行并且输出Log ,不仅影响性能,还有可能泄漏隐私。所以我们在发布上线时会关掉Log。
比如下面这段代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using
UnityEngine;
using
System.Collections;
public
class
NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void
Start () {
}
void
OnGUI()
{
if
(GUILayout.Button(
"Log"
))
{
Debug.Log(
"test Log"
);
Debug.LogWarning(
"test LogWarning"
);
Debug.LogError(
"test LogError"
);
}
}
// Update is called once per frame
void
Update () {
}
}
运行之后在界面上会有 一个按钮 ,点击之后会输出 Log 。
我们打开 Profiler 来监测 CPU的消耗。
可以看到 在点击按钮时,CPU 出现了一个小 波峰。 FPS从1000 掉到了 250 。
点击该波峰,定位到 对应的函数 ,可以看到 输出Log 占用了 84.8% 的CPU(当前)。
赶紧把它干掉吧。
我们来封装一个 LOG,编译成DLL,可以自己控制是否输出Log。
首先用MonoDevelop 新建一个 Library 项目。
右键References , 引用 UnityEngine.dll 。
右键 SNKDebug项目,点击Option 打开设置界面,设置.Net 为 2.0 。
[
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
41
42
43
44
45
46
47
/**************************
* 文件名:SNKDebuger.cs;
* 文件描述:Unity Log的封装;
***************************/
using
UnityEngine;
using
System.Collections;
public
class
SNKDebuger {
static
public
bool
EnableLog =
true
;
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);
}
}
}
[
把解决方案配置修改为 Release , 然后点击菜单栏 Build – Build ALL
找到生成的 SNKDebug.dll ,拖到Unity 中,然后像下面使用
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
using
UnityEngine;
using
System.Collections;
public
class
NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void
Start () {
//SNKDebuger.EnableLog = false;
}
void
OnGUI()
{
if
(GUILayout.Button(
"Log"
))
{
SNKDebuger.Log(
"test Log"
);
SNKDebuger.LogWarning(
"test LogWarning"
);
SNKDebuger.LogError(
"test LogError"
);
}
}
// Update is called once per frame
void
Update () {
}
}
如果需要关闭Log ,只需要设置
1
SNKDebuger.EnableLog =
false
;
阅读全文
0 0
- 封装Debug.Log 游戏发布关闭 Log 减少性能消耗
- 封装 UnityEngine.Debug.Log 为Dll ,游戏发布关闭 Log 减少性能消耗
- 如何关闭Mybatis的DEBUG log打印
- 封装 UnityEngine.Debug.Log 为Dll
- debug log
- debug log
- log封装
- 在Release版本中如何关闭Debug版本中的log
- 在Release版本中如何关闭Debug版本中的log
- 【Unity3D游戏开发】之定制Debug.log输出 (八)
- Unity3D研究院之在发布版本屏蔽Debug.log输出的Log
- FND: Debug Log Enabled引起的性能问题
- debug log print function
- FND Debug Log(FND_LOG_MESSAGES)
- Debug Log没有生成?
- QT输出debug log
- QT输出debug log
- Debug.Log的妙用
- 类calss Car
- 日常运维 -1
- cocos2dx ScrollView,TableView,ListView区别
- Java-6大原则
- linux内核设计与实现[第4章 摘抄]
- 封装Debug.Log 游戏发布关闭 Log 减少性能消耗
- Eclipse项目上传码云
- spark.end()
- Spring注解@Component、@Repository、@Service、@Controller区别
- javascript中stopImmediatePropagation函数和stopPropagation函数的区别
- [OC]之 atomic 与 nonatomic的区别
- 记一次查openresty请求耗时问题 Expect:100-continue
- 笔记:udacity计算机导论
- docker创建mysql容器