快速对不同平台设置自定义宏

工具的使用

另外下面的输入框输入另外的宏以“,”隔开

代码

public class SettingWindows : EditorWindow
{
    private List<MacroItem> macroItemLists = new List<MacroItem>();

    private Dictionary<string, bool> dic = new Dictionary<string, bool>();

    private string Macro = null;
    [MenuItem("Tools/Setting")]
    public static void Settings()
    {
        SettingWindows sw = GetWindow<SettingWindows>("设置窗口");//获取指定类型的窗口.
        //sw.titleContent = new GUIContent("设置窗口");
        sw.Show();
    }
    /// <summary>
    /// 每打开一次窗口就会执行一次
    /// </summary>
    string defines;
    private void OnEnable()
    {       
        macroItemLists.Clear();//每次打开一次窗口都需要将数据重置.
        macroItemLists.Add(new MacroItem() { Name = "DOB5", DisplayName = "DOB5"});
        macroItemLists.Add(new MacroItem() { Name = "GameMonetize", DisplayName = "GameMonetize"});
        macroItemLists.Add(new MacroItem() { Name = "SITE_LIMIT", DisplayName = "网站限制" });

      //自己定义的宏在这里添加
    }
    BuildTargetGroup group= BuildTargetGroup.WebGL;
    /// <summary>
    /// 绘制窗口条目.
    /// </summary>
    private void OnGUI()
    {
        EditorGUILayout.BeginHorizontal();//开启一个水平行   备注:必须成对出现
        //选择平台
        group = (BuildTargetGroup)EditorGUILayout.EnumPopup(group);
        EditorGUILayout.EndHorizontal();//结束这个水平行
        Macro = PlayerSettings.GetScriptingDefineSymbolsForGroup(group);//获取宏信息  参数:获取哪个平台下的
        for (int i = 0; i < macroItemLists.Count; i++)
        {
            if (!string.IsNullOrEmpty(Macro) && Macro.IndexOf(macroItemLists[i].Name) != -1)
            {
                dic[macroItemLists[i].Name] = true;
            }
            else
            {
                dic[macroItemLists[i].Name] = false;
            }
            EditorGUILayout.BeginHorizontal("box");//开启一个水平行   备注:必须成对出现
            dic[macroItemLists[i].Name] = GUILayout.Toggle(dic[macroItemLists[i].Name], macroItemLists[i].DisplayName);
            EditorGUILayout.EndHorizontal();//结束这个水平行
        }
        EditorGUILayout.LabelField("另外:");
        //用来手动宏,以“,”隔开
        defines = EditorGUILayout.TextField(defines);
        EditorGUILayout.Space(20);
        EditorGUILayout.BeginHorizontal();//开启一个水平行   备注:必须成对出现
        if (GUILayout.Button("保存", GUILayout.Width(100)))
        {
            SaveMacro();
        }

        EditorGUILayout.EndHorizontal();//结束这个水平行

    }
    /// <summary>
    /// 保存宏信息
    /// </summary>
    private void SaveMacro()
    {
        Macro = string.Empty;
        foreach (var item in dic)
        {
            if (item.Value)
            {
                Macro += string.Format("{0};", item.Key);
            }
        }
        Macro += string.Format("{0};", defines);
        
            PlayerSettings.SetScriptingDefineSymbolsForGroup(group, Macro);//将信息保存到宏信息里. 参数1:保存到哪个平台  参数2:要保存的内容.

    }
    
    /// <summary>
    /// 宏元素.
    /// </summary>
    public class MacroItem
    {
        /// <summary>
        /// 宏名称
        /// </summary>
        public string Name;

        /// <summary>
        /// 窗口上显示的名称
        /// </summary>
        public string DisplayName;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值