本文参考雨松Mono的文章:
http://www.xuanyusong.com/archives/2782
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
在游戏发布时,有很多东西需要进行优化 ,消耗性能的东西 能减少就减少。
UnityEngine.Debug.Log 是很消耗性能的操作,即使我们选择的是Release 版本发布,这个函数仍然会执行并且输出Log ,不仅影响性能,还有可能泄漏隐私。所以我们在发布上线时会关掉Log。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
比如下面这段代码:
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 () {
}
}
我们打开 Profiler 来监测 CPU的消耗。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
可以看到 在点击按钮时,CPU 出现了一个小 波峰。 FPS从1000 掉到了 250 。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
点击该波峰,定位到 对应的函数 ,可以看到 输出Log 占用了 84.8% 的CPU(当前)。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
赶紧把它干掉吧。
我们来封装一个 LOG,编译成DLL,可以自己控制是否输出Log。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
首先用MonoDevelop 新建一个 Library 项目。
右键References , 引用 UnityEngine.dll 。
右键 SNKDebug项目,点击Option 打开设置界面,设置.Net 为 2.0 。
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
添加以下代码:
/**************************
* 文件名:SNKDebuger.cs;
* 文件描述:Unity Log的封装;
* 创建日期:2015/05/08;
* Author:陈鹏;
***************************/
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
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/
找到生成的 SNKDebug.dll ,拖到Unity 中,然后像下面使用
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 () {
}
}
SNKDebuger.EnableLog = false;
http://pan.baidu.com/s/10LUrW
文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/