封装 UnityEngine.Debug.Log 为Dll ,游戏发布关闭 Log 减少性能消耗

本文参考雨松Mono的文章:

http://www.xuanyusong.com/archives/2782

Mono介绍的是Mac 上Console 编译DLL的方法,本文是在 Win7 系统使用MonoDeveloper 编译。

文章转自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 () {

	}
}

运行之后在界面上会有 一个按钮 ,点击之后会输出 Log 。

我们打开 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 。

文章转自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 () {

	}
}

如果需要关闭Log ,只需要设置

SNKDebuger.EnableLog = false;

工程打包下载:

http://pan.baidu.com/s/1sjsPFC5

文章转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn/

时间: 2024-10-19 20:54:19

封装 UnityEngine.Debug.Log 为Dll ,游戏发布关闭 Log 减少性能消耗的相关文章

CocoStudio游戏发布后资源加密大致实现思路

截 止到目前,CocoStudio版本已经发展到1.5,各个子工具间也已经发生了巨大变化.但是,无论是动画编辑器,UI编辑器,场景编辑器还是 数据编辑器,它们生成(导出)的文件在商业开发中往往需要进行加密处理(当然,对于其中的一些部分加密也实在没有必要). 那么,版本发布时,如何对资源进行加密? 对此,以前官方没有给出任何回答.最近,我从cocoachina论坛上了解了几句,但是已经足够我们参考之用了.大致思路如下: NOTE: hanrea是cocoachina论坛中的一位高人,我有事经常与他

广州游戏发布站服务器哪家好

在防御和应对DDoS攻击时,保持警惕是至关重要的.安全管理员必须了解针对互联网系统的最新攻击趋势.策略和流程.各种统计信息表明,百万级DDoS攻击的规模和频率将继续增长,所以要做好防御措施应对最坏的情况,比如客户服务器遇到的攻击.提前做好准备是缩小DDoS攻击范围和强化潜在攻击目标防御能力的一个重要步骤.    福建网泰信息科技有限公司,是全方位整合网络资源的专业IDC基础服务商,是拥有ISP资质的电信运行商!自主运营6星级机房,省电信骨干网络,近期机房整体升级后,出口带宽2T,机房总防御1T级

Cocos2d-x 游戏发布攻防篇01:防止打包党的小技巧

其实这方面的心得我倒是没有多少,也没什么高深的心得,只不过我曾经有4.5个游戏被打包过而已(小若:赤裸裸地炫耀你的失败). 虽然我这文章标题写着"攻防篇01",但不代表就一定有"攻防篇02",只是,随意取的.(小若:敢负责任一点吗?) 这里科普一下,什么叫做打包党. 打包党是一种职业,一种不光彩的职业,他们专门去下载别人的游戏安装包,反编译,然后加入自己的广告,最后重新打包上传到各个市场,从而谋取收益. 别小看他们,部分打包党过得比我们还要滋润. 什么?你心动了?你

智能电视游戏品牌峰会顺利召开,多款精品TV游戏发布

12.26,在大家还沉浸在欢乐的圣诞氛围中时,智能电视游戏行业内颇具影响力的会议已经在深圳召开.由橙子引擎(OGEngine)主办的<2014智能电视游戏品牌峰会--精品TV游戏产品发布会>在深圳南山科技园顺利举办,本次会议汇聚了众多明星游戏CP和游戏渠道等业内巨头,更是得到了业内众多媒体的支持. 纵观整个智能电视游戏行业的发展趋势,我们不难发现其中的各种机遇,积极的发展趋势和光明的前景,但是这其中也存在一些问题:游戏内容不够吸引人,大型游戏画面感粗糙,玩家无法更好的体验游戏带给他们的乐趣.当

第一人称冒险的《幽暗扫描》VR游戏发布在即

原文标题:第一人称冒险的<幽暗扫描>VR游戏发布在即 Introversion软件最近宣布:这几天将发布第一人称冒险的<幽暗扫描>,这是一个有趣的举动,考虑到Introversion建筑师在Early Access中花费了大约六年时间.现在有消息说,<Scanner Sombre>很快就可以在VR上玩,Introversion的联合创始人马克·莫里斯(Mark Morris)没有正式宣布,只是在本周在德国斯德哥尔摩举行的PDXCon的谈话中提到我. 据悉,莫里斯和联合创

【JavaScript 封装库】BETA 2.0 测试版发布!

1 /* 2 源码作者: 石不易(Louis Shi) 3 联系方式: http://www.shibuyi.net 4 =================================================================================================== 5 程序名称: JavaScript 封装库 BETA 2.0 版 6 迭代版本: BETA 1.0 7 功能总数: 50 个 8 新增总数: 6 个 9 删除总数: 0 个 1

【JavaScript 封装库】BETA 1.0 测试版发布!

1 /* 2 源码作者: 石不易(Louis Shi) 3 联系方式: http://www.shibuyi.net 4 =================================================================================================== 5 程序名称: JavaScript 封装库 BETA 1.0 版 6 迭代版本: Prototype 7 功能总数: 44 个 8 新增总数: 30 个 9 删除总数: 0 个

【JavaScript 封装库】BETA 4.0 测试版发布!

1 /* 2 源码作者: 石不易(Louis Shi) 3 联系方式: http://www.shibuyi.net 4 =================================================================================================== 5 程序名称: JavaScript 封装库 BETA 4.0 版 6 迭代版本: BETA 3.0 7 插件总数: 12 个 8 库方法数: 26 个 9 功能总数: 67 个

【JavaScript 封装库】BETA 3.0 测试版发布!

1 /* 2 源码作者: 石不易(Louis Shi) 3 联系方式: http://www.shibuyi.net 4 =================================================================================================== 5 程序名称: JavaScript 封装库 BETA 3.0 版 6 迭代版本: BETA 2.0 7 插件总数: 8 个 8 库方法数: 20 个 9 功能总数: 48 个