码迷,mamicode.com
首页 > 编程语言 > 详细

使用C#的Conditional特性与Unity编辑器宏命令做条件编译

时间:2018-06-27 18:51:09      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:指定   IV   关闭   extension   日志   net   添加   ati   运行   

概要

在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章

而在Unity项目中,条件编译符号需要在Unity Editor编辑器中添加。

为什么要用条件编译

Unity中最常见的使用条件编译的情况就是分平台编译不同的代码片段。由于Unity是跨平台的,不同平台有不同的特性,我们经常能见到 #if...#endif 来做条件编译的代码块。

另一种常见用法是,例如在编辑器下运行时输出日志,而在打包真机调试时为了节省性能需要关闭日志(在Update()函数中每帧输出日志很耗性能)。此时可以把输出日志的函数使用Conditional特性来标记上,只有在Unity编辑器中开启了指定的宏命令,这个输出日志的函数才能被编译,即可很方便地开关日志。

例子

namespace UnityEngine
{
    public static class DebugExtension
    {
        [Conditional("EnableLog")]
        public static void Logger(this object obj, string message)
        {
            Debug.Log(message);
        }
   }
}

上面的代码中,通过C#的扩展方法,给所有的System.Object类添加了一个Logger()方法,该方法被标记为[Conditional("EnableLog")]。需要在Unity编辑器中添加上EnableLog宏命令,该方法才能被编译。

Unity编辑器添加宏命令在File - Build Settings - Player Settings - Other Settings中,如下图。

技术分享图片

输入了EnableLog后,上面的Logger()方法才能被编译。如果去掉EnableLog,所有调用了Logger()函数的代码也不会被编译!

 this.Logger("日志扩展类中的方法。该方法需要在Unity编辑器中添加宏命令EnableLog才能被编译!");

 

使用C#的Conditional特性与Unity编辑器宏命令做条件编译

标签:指定   IV   关闭   extension   日志   net   添加   ati   运行   

原文地址:https://www.cnblogs.com/guxin/p/9235282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!