工具的使用
另外下面的输入框输入另外的宏以“,”隔开
代码
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;
}
}