public bool IsContain(SkillFlag _allSkill, SkillFlag _sthSkill) { // 与运算, 如果sthSkill 与 _allSkill并不对应则会返回0 return(0 != (_allSkill & _sthSkill)); }
private void OnGUI() { EditorGUILayout.BeginVertical(); if (createCommanderEditor != null) { GUILayout.Label(createCommanderEditor.editorTarget.unitName); GUILayout.Label(new GUIContent(createCommanderEditor.editorTarget.activityConfig.normalSprite.texture)); } else if (soliderConfig != null) { GUILayout.Label(soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].soliderType.ToString()); GUILayout.Label(new GUIContent(soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].activityConfig.normalSprite.texture)); } int index = 0; for (int i = 0; i < Enum.GetValues(typeof(SkillFlag)).Length; i++) { SkillFlag currentFlag = (SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i); if (index == 0) { EditorGUILayout.BeginHorizontal(); } index++; toggleRuntimeArray[i] = EditorGUILayout.ToggleLeft(currentFlag.ToString(), toggleRuntimeArray[i]); if (index == 3) { index = 0; EditorGUILayout.EndHorizontal(); } } if (index != 0) { EditorGUILayout.EndHorizontal(); } if (toggleInitArray[0] == toggleRuntimeArray[0]) { for (int i = 1; i < toggleRuntimeArray.Length; i++) { if (toggleInitArray[i] != toggleRuntimeArray[i]) { toggleInitArray[i] = toggleRuntimeArray[i]; if (toggleRuntimeArray[i]) { toggleInitArray[0] = toggleRuntimeArray[0] = false; if (createCommanderEditor != null) { createCommanderEditor.editorTarget.skillMastery = createCommanderEditor.editorTarget.skillMastery | (SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i); } else if (soliderConfig != null) { soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery = soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery | (SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i); } } else { if (createCommanderEditor != null) { createCommanderEditor.editorTarget.skillMastery = createCommanderEditor.editorTarget.skillMastery & ~(SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i); } else if (soliderConfig != null) { soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery = soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery & ~(SkillFlag)Enum.GetValues(typeof(SkillFlag)).GetValue(i); } if (!toggleRuntimeArray.Any(x => x)) { if (createCommanderEditor != null) { createCommanderEditor.editorTarget.skillMastery = 0; } else if (soliderConfig != null) { soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery = 0; } toggleRuntimeArray[0] = toggleInitArray[0] = true; } } } } } else { toggleInitArray[0] = toggleRuntimeArray[0]; if (toggleRuntimeArray[0]) { if (createCommanderEditor != null) { createCommanderEditor.editorTarget.skillMastery = 0; } else if (soliderConfig != null) { soliderConfig.editorTarget.soliderDataArray[soliderConfigIndex].skillMastery = 0; } for (int i = 1; i < toggleInitArray.Length; i++) { toggleInitArray[i] = toggleRuntimeArray[i] = false; } } } EditorGUILayout.EndVertical(); }