在Unity中利用宏命令实现对代码的开关

我们可以在Scripting Define Symbols中定义要使用的宏命令,如下图所示,最简单直接的办法是此处直接输入或者删除宏命令来控制代码开关,但更好的方式是通过扩展编辑器实现自动删除或者添加宏命令。

tempsnip.jpg

核心代码如下

    /// <summary>
    /// 添加或者删除宏命令
    /// </summary>
    /// <param name="define">宏命令</param>
    /// <param name="enable">添加或删除</param>
    public static void SetDefineSymbols(string define, bool enable)
    {
        string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone);//获取目标平台下的宏命令
        if (enable)
        {
            if (!currentDefines.Contains(define))
            {
                currentDefines += ";" + define;
            }
        }
        else
        {
            currentDefines = currentDefines.Replace(define, "");
        }
        PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Standalone, currentDefines);
    }

下面对编辑器进行扩展

    [MenuItem("DevelopmentHandler/Test")]
    public static void TestOn()
    {
#if TEST_ON
        SetDefineSymbols("TEST_ON", false);//删除TEST_ON宏命令
        Menu.SetChecked("DevelopmentHandler/Test", false);//取消勾选状态
        
#else
        SetDefineSymbols("TEST_ON", true);//添加TEST_ON宏命令
        Menu.SetChecked("DevelopmentHandler/Test", true);//设置勾选状态
#endif
    }

最终效果


捕获.JPG
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Windows CMD命令大全 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,W...
    独行小生阅读 622评论 0 5
  • 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来...
    KarlReiss阅读 730评论 0 0
  • 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来...
    wp2001阅读 215评论 0 0
  • 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来...
    Littleston阅读 3,366评论 0 12
  • 完全没想到这篇文章的阅读量有点多,之前没有考虑什么就直接发布了,对此表示歉意,所以重新找了一篇文章汇总,以免在坑到...
    BabyFatXu阅读 1,766评论 0 1