public override void OnInitialization() { base.OnInitialization(); _entityRoot = transform.FindChildren("EntityRoot"); //创建所有实体的逻辑对象 List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(EntityLogic))) { EntityResourceAttribute attribute = types[i].GetCustomAttribute <EntityResourceAttribute>(); if (attribute != null) { _entities.Add(types[i], new List <EntityLogic>()); GameObject group = new GameObject(types[i].Name + "[Group]"); group.transform.SetParent(_entityRoot.transform); group.transform.localPosition = Vector3.zero; group.transform.localRotation = Quaternion.identity; group.transform.localScale = Vector3.one; group.SetActive(true); _entitiesGroup.Add(types[i], group); _objectPool.Add(types[i], new Queue <GameObject>()); } else { GlobalTools.LogError(string.Format("创建实体逻辑对象失败:实体逻辑类 {0} 丢失 EntityResourceAttribute 标记!", types[i].Name)); } } } }
public DebuggerScene() { Type baseType = typeof(DebuggerComponentBase); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(baseType)) { CustomDebuggerAttribute attr = types[i].GetCustomAttribute <CustomDebuggerAttribute>(); if (attr != null) { _debuggerComponents.Add(attr.InspectedType, types[i]); } } } baseType = typeof(Component); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(baseType)) { _componentTypes.Add(types[i]); } } }
public override void OnInspectorGUI() { GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Input manager, managing cross platform input!", MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("InputDevice "); if (GUILayout.Button(_target.InputDeviceType, "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(InputDeviceBase)) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), _target.InputDeviceType == types[j].FullName, () => { Undo.RecordObject(target, "Set InputDevice"); _target.InputDeviceType = types[j].FullName; this.HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); }
private void LicenseGUI() { GUILayout.BeginVertical(EditorGlobalTools.Styles.Box); GUILayout.BeginHorizontal(); GUILayout.Space(10); _showLicense = EditorGUILayout.Foldout(_showLicense, "License", true); GUILayout.EndHorizontal(); if (_showLicense) { GUILayout.BeginHorizontal(); Toggle(Target.IsPermanentLicense, out Target.IsPermanentLicense, "Permanent License"); GUILayout.EndHorizontal(); if (!Target.IsPermanentLicense) { GUILayout.BeginHorizontal(); GUILayout.Label("Licenser"); if (GUILayout.Button(Target.LicenserType, EditorGlobalTools.Styles.MiniPopup)) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); gm.AddItem(new GUIContent("<None>"), Target.LicenserType == "<None>", () => { Undo.RecordObject(target, "Set Licenser"); Target.LicenserType = "<None>"; HasChanged(); }); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(LicenserBase))) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), Target.LicenserType == types[j].FullName, () => { Undo.RecordObject(target, "Set Licenser"); Target.LicenserType = types[j].FullName; HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); } } GUILayout.EndVertical(); }
public override void OnInitialization() { base.OnInitialization(); //注册所有数据集 List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(DataSet))) { _dataSets.Add(types[i], new List <DataSet>()); } } }
public override void OnInitialization() { base.OnInitialization(); //注册所有存在的事件 List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(EventHandlerBase))) { _eventHandlerList.Add(types[i], null); } } }
public override void OnInitialization() { base.OnInitialization(); for (int i = 0; i < DefineEntityNames.Count; i++) { if (!_defineEntities.ContainsKey(DefineEntityNames[i])) { _defineEntities.Add(DefineEntityNames[i], DefineEntityTargets[i]); } } _entityRoot = transform.Find("EntityRoot"); //创建所有实体的逻辑对象 List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(EntityLogicBase))) { EntityResourceAttribute attribute = types[i].GetCustomAttribute <EntityResourceAttribute>(); if (attribute != null) { _entities.Add(types[i], new List <EntityLogicBase>()); GameObject group = new GameObject(types[i].Name + "[Group]"); group.transform.SetParent(_entityRoot); group.transform.localPosition = Vector3.zero; group.transform.localRotation = Quaternion.identity; group.transform.localScale = Vector3.one; group.SetActive(true); _entitiesGroup.Add(types[i], group); _objectPool.Add(types[i], new Queue <GameObject>()); } else { throw new HTFrameworkException(HTFrameworkModule.Entity, "创建实体逻辑对象失败:实体逻辑类 " + types[i].Name + " 丢失 EntityResourceAttribute 标记!"); } } } }
public override void Initialization() { base.Initialization(); _uiRoot = transform.Find("UIRoot"); _uiRootRect = _uiRoot.rectTransform(); _residentPanel = _uiRoot.Find("ResidentPanel"); _temporaryPanel = _uiRoot.Find("TemporaryPanel"); //创建所有UI的逻辑对象 List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(UILogicResident) || types[i].BaseType == typeof(UILogicTemporary)) { _UIs.Add(types[i], Activator.CreateInstance(types[i]) as UILogic); } } }
private void MainDataGUI() { GUILayout.BeginVertical("Box"); GUILayout.BeginHorizontal(); GUILayout.Space(10); _showMainData = EditorGUILayout.Foldout(_showMainData, "Main Data", true); GUILayout.EndHorizontal(); if (_showMainData) { GUILayout.BeginHorizontal(); GUILayout.Label("MainData"); if (GUILayout.Button(_target.MainDataType, "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); gm.AddItem(new GUIContent("<None>"), _target.MainDataType == "<None>", () => { Undo.RecordObject(target, "Set Main Data"); _target.MainDataType = "<None>"; HasChanged(); }); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(MainData)) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), _target.MainDataType == types[j].FullName, () => { Undo.RecordObject(target, "Set Main Data"); _target.MainDataType = types[j].FullName; HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); }
protected override void OnInspectorDefaultGUI() { base.OnInspectorDefaultGUI(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Debug Manager, Runtime debugger for games!", MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); Toggle(Target.IsEnableDebugger, out Target.IsEnableDebugger, "Is Enable Debugger"); GUILayout.EndHorizontal(); if (Target.IsEnableDebugger) { GUILayout.BeginHorizontal(); GUILayout.Label("Debugger", GUILayout.Width(100)); if (GUILayout.Button(Target.DebuggerType, EditorGlobalTools.Styles.MiniPopup)) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i] == typeof(Debugger) || types[i].IsSubclassOf(typeof(Debugger))) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), Target.DebuggerType == types[j].FullName, () => { Undo.RecordObject(target, "Set Debugger"); Target.DebuggerType = types[j].FullName; HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Debugger Skin", GUILayout.Width(100)); ObjectField(Target.DebuggerSkin, out Target.DebuggerSkin, false, ""); GUILayout.EndHorizontal(); } }
public override void OnInitialization() { base.OnInitialization(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(CustomModuleBase))) { CustomModuleAttribute att = types[i].GetCustomAttribute <CustomModuleAttribute>(); if (att != null && att.IsEnable && !_customModules.ContainsKey(att.ModuleName)) { _customModules.Add(att.ModuleName, Activator.CreateInstance(types[i]) as CustomModuleBase); } } } foreach (var module in _customModules) { module.Value.OnInitialization(); } }
public override void OnInspectorGUI() { GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("HTFramework Main Module!", MessageType.Info); GUILayout.EndHorizontal(); #region MainData GUILayout.BeginVertical("Box"); GUILayout.BeginHorizontal(); GUILayout.Label("MainData"); if (GUILayout.Button(_target.MainDataType, "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); gm.AddItem(new GUIContent("<None>"), _target.MainDataType == "<None>", () => { Undo.RecordObject(target, "Set Main Data"); _target.MainDataType = "<None>"; this.HasChanged(); }); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(MainData)) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), _target.MainDataType == types[j].FullName, () => { Undo.RecordObject(target, "Set Main Data"); _target.MainDataType = types[j].FullName; this.HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); #endregion #region License GUILayout.BeginVertical("Box"); GUILayout.BeginHorizontal(); this.Toggle(_target.IsPermanentLicense, out _target.IsPermanentLicense, "Permanent License"); GUILayout.EndHorizontal(); if (!_target.IsPermanentLicense) { GUILayout.BeginHorizontal(); GUILayout.Label("Prompt:", "BoldLabel"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); this.TextField(_target.EndingPrompt, out _target.EndingPrompt); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Ending Time:", "BoldLabel"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Year:", GUILayout.Width(45)); int year = EditorGUILayout.IntField(_target.Year, GUILayout.Width(50)); if (year != _target.Year) { Undo.RecordObject(target, "Set Year"); _target.Year = year; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("", "OL Plus", GUILayout.Width(15))) { Undo.RecordObject(target, "Set Year"); _target.Year += 1; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("", "OL Minus", GUILayout.Width(15))) { Undo.RecordObject(target, "Set Year"); _target.Year -= 1; CorrectDateTime(); this.HasChanged(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Month:", GUILayout.Width(45)); int month = EditorGUILayout.IntField(_target.Month, GUILayout.Width(50)); if (month != _target.Month) { Undo.RecordObject(target, "Set Month"); _target.Month = month; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("", "OL Plus", GUILayout.Width(15))) { Undo.RecordObject(target, "Set Month"); _target.Month += 1; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("", "OL Minus", GUILayout.Width(15))) { Undo.RecordObject(target, "Set Month"); _target.Month -= 1; CorrectDateTime(); this.HasChanged(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Day:", GUILayout.Width(45)); int day = EditorGUILayout.IntField(_target.Day, GUILayout.Width(50)); if (day != _target.Day) { Undo.RecordObject(target, "Set Day"); _target.Day = day; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("", "OL Plus", GUILayout.Width(15))) { Undo.RecordObject(target, "Set Day"); _target.Day += 1; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("", "OL Minus", GUILayout.Width(15))) { Undo.RecordObject(target, "Set Day"); _target.Day -= 1; CorrectDateTime(); this.HasChanged(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Now", "MiniButton")) { Undo.RecordObject(target, "Set Now"); _target.Year = DateTime.Now.Year; _target.Month = DateTime.Now.Month; _target.Day = DateTime.Now.Day; CorrectDateTime(); this.HasChanged(); } if (GUILayout.Button("2 Months Later", "MiniButton")) { Undo.RecordObject(target, "Set 2 Months Later"); _target.Month += 2; CorrectDateTime(); this.HasChanged(); } GUILayout.EndHorizontal(); } GUILayout.EndVertical(); #endregion }
protected override void OnInspectorDefaultGUI() { base.OnInspectorDefaultGUI(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("State Count:" + Target.StateNames.Count, MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); Toggle(Target.IsAutoRegister, out Target.IsAutoRegister, "Auto Register"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Name: "); TextField(Target.Name, out Target.Name); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Data: "); if (GUILayout.Button(Target.Data, "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); gm.AddItem(new GUIContent("<None>"), Target.Data == "<None>", () => { Undo.RecordObject(target, "Set FSM Data Class"); Target.Data = "<None>"; HasChanged(); }); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(FSMData))) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), Target.Data == types[j].FullName, () => { Undo.RecordObject(target, "Set FSM Data Class"); Target.Data = types[j].FullName; HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUI.enabled = Target.DefaultStateName != ""; GUILayout.Label("Default: " + Target.DefaultStateName); GUI.enabled = true; GUILayout.FlexibleSpace(); GUI.enabled = Target.StateNames.Count > 0; if (GUILayout.Button("Set Default", "MiniPopup")) { GenericMenu gm = new GenericMenu(); for (int i = 0; i < Target.StateNames.Count; i++) { int j = i; gm.AddItem(new GUIContent(Target.StateNames[j]), Target.DefaultStateName == Target.StateNames[j], () => { Undo.RecordObject(target, "Set FSM Default State"); Target.DefaultState = Target.States[j]; Target.DefaultStateName = Target.StateNames[j]; HasChanged(); }); } gm.ShowAsContext(); } GUI.enabled = true; GUILayout.EndHorizontal(); for (int i = 0; i < Target.StateNames.Count; i++) { GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("{0}.{1}", i + 1, Target.StateNames[i])); GUILayout.FlexibleSpace(); if (GUILayout.Button("Edit", "minibuttonleft")) { if (_stateTypes.ContainsKey(Target.States[i])) { UnityEngine.Object classFile = AssetDatabase.LoadAssetAtPath(_stateTypes[Target.States[i]], typeof(TextAsset)); if (classFile) { AssetDatabase.OpenAsset(classFile); } else { GlobalTools.LogError("没有找到 " + Target.States[i] + " 脚本文件!"); } } else { GlobalTools.LogError("没有找到 " + Target.States[i] + " 脚本文件!"); } } if (GUILayout.Button("Delete", "minibuttonright")) { Undo.RecordObject(target, "Delete FSM State"); if (Target.DefaultStateName == Target.StateNames[i]) { Target.DefaultState = ""; Target.DefaultStateName = ""; } Target.States.RemoveAt(i); Target.StateNames.RemoveAt(i); if (Target.DefaultStateName == "" && Target.StateNames.Count > 0) { Target.DefaultState = Target.States[0]; Target.DefaultStateName = Target.StateNames[0]; } HasChanged(); } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Add State", "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(FiniteState))) { int j = i; string stateName = types[j].FullName; FiniteStateNameAttribute fsmAtt = types[j].GetCustomAttribute <FiniteStateNameAttribute>(); if (fsmAtt != null) { stateName = fsmAtt.Name; } if (Target.States.Contains(types[j].FullName)) { gm.AddDisabledItem(new GUIContent(stateName)); } else { gm.AddItem(new GUIContent(stateName), false, () => { Undo.RecordObject(target, "Add FSM State"); Target.States.Add(types[j].FullName); Target.StateNames.Add(stateName); if (Target.DefaultStateName == "") { Target.DefaultState = Target.States[0]; Target.DefaultStateName = Target.StateNames[0]; } HasChanged(); }); } } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); }
protected override void OnInspectorDefaultGUI() { base.OnInspectorDefaultGUI(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Activated Procedure Count:" + Target.ActivatedProcedures.Count, MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUI.enabled = Target.DefaultProcedure != ""; GUILayout.Label("Default: " + Target.DefaultProcedure); GUI.enabled = true; GUILayout.FlexibleSpace(); GUI.enabled = Target.ActivatedProcedures.Count > 0; if (GUILayout.Button("Set Default", "MiniPopup")) { GenericMenu gm = new GenericMenu(); for (int i = 0; i < Target.ActivatedProcedures.Count; i++) { int j = i; gm.AddItem(new GUIContent(Target.ActivatedProcedures[j]), Target.DefaultProcedure == Target.ActivatedProcedures[j], () => { Undo.RecordObject(target, "Set Default Procedure"); Target.DefaultProcedure = Target.ActivatedProcedures[j]; HasChanged(); }); } gm.ShowAsContext(); } GUI.enabled = true; GUILayout.EndHorizontal(); for (int i = 0; i < Target.ActivatedProcedures.Count; i++) { GUILayout.BeginHorizontal(); GUILayout.Label((i + 1) + "." + Target.ActivatedProcedures[i]); GUILayout.FlexibleSpace(); if (GUILayout.Button("▲", "MiniButtonleft")) { if (i > 0) { Undo.RecordObject(target, "Set Procedure Order"); string procedure = Target.ActivatedProcedures[i]; Target.ActivatedProcedures.RemoveAt(i); Target.ActivatedProcedures.Insert(i - 1, procedure); HasChanged(); continue; } } if (GUILayout.Button("▼", "MiniButtonmid")) { if (i < Target.ActivatedProcedures.Count - 1) { Undo.RecordObject(target, "Set Procedure Order"); string procedure = Target.ActivatedProcedures[i]; Target.ActivatedProcedures.RemoveAt(i); Target.ActivatedProcedures.Insert(i + 1, procedure); HasChanged(); continue; } } if (GUILayout.Button("Edit", "MiniButtonmid")) { string[] names = Target.ActivatedProcedures[i].Split('.'); if (_procedureTypes.ContainsKey(names[names.Length - 1])) { UnityEngine.Object classFile = AssetDatabase.LoadAssetAtPath(_procedureTypes[names[names.Length - 1]], typeof(TextAsset)); if (classFile) { AssetDatabase.OpenAsset(classFile); } else { GlobalTools.LogError("没有找到 " + Target.ActivatedProcedures[i] + " 脚本文件!"); } } else { GlobalTools.LogError("没有找到 " + Target.ActivatedProcedures[i] + " 脚本文件!"); } } if (GUILayout.Button("Delete", "minibuttonright")) { Undo.RecordObject(target, "Delete Procedure"); if (Target.DefaultProcedure == Target.ActivatedProcedures[i]) { Target.DefaultProcedure = ""; } Target.ActivatedProcedures.RemoveAt(i); if (Target.DefaultProcedure == "" && Target.ActivatedProcedures.Count > 0) { Target.DefaultProcedure = Target.ActivatedProcedures[0]; } HasChanged(); } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Add Procedure", "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(ProcedureBase))) { int j = i; if (Target.ActivatedProcedures.Contains(types[j].FullName)) { gm.AddDisabledItem(new GUIContent(types[j].FullName)); } else { gm.AddItem(new GUIContent(types[j].FullName), false, () => { Undo.RecordObject(target, "Add Procedure"); Target.ActivatedProcedures.Add(types[j].FullName); if (Target.DefaultProcedure == "") { Target.DefaultProcedure = Target.ActivatedProcedures[0]; } HasChanged(); }); } } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); }
public override void OnInitialization() { base.OnInitialization(); _UIEntity = transform.FindChildren("UIEntity"); _overlayUIRoot = _UIEntity.transform.Find("OverlayUIRoot"); _overlayUIRootRect = _overlayUIRoot.rectTransform(); _overlayResidentPanel = _overlayUIRoot.Find("ResidentPanel"); _overlayTemporaryPanel = _overlayUIRoot.Find("TemporaryPanel"); _cameraUIRoot = _UIEntity.transform.Find("CameraUIRoot"); _cameraUIRootRect = _cameraUIRoot.rectTransform(); _cameraResidentPanel = _cameraUIRoot.Find("ResidentPanel"); _cameraTemporaryPanel = _cameraUIRoot.Find("TemporaryPanel"); _worldUIRoot = _UIEntity.transform.Find("WorldUIRoot"); UICamera = _UIEntity.GetComponentByChild <Camera>("UICamera"); _overlayUIRoot.gameObject.SetActive(IsEnableOverlayUI); _cameraUIRoot.gameObject.SetActive(IsEnableCameraUI); UICamera.gameObject.SetActive(IsEnableCameraUI); _worldUIRoot.gameObject.SetActive(IsEnableWorldUI); //创建所有UI的逻辑对象 List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(UILogicResident)) || types[i].IsSubclassOf(typeof(UILogicTemporary))) { UIResourceAttribute attribute = types[i].GetCustomAttribute <UIResourceAttribute>(); if (attribute != null) { switch (attribute.EntityType) { case UIType.Overlay: if (IsEnableOverlayUI) { _overlayUIs.Add(types[i], Activator.CreateInstance(types[i]) as UILogic); } break; case UIType.Camera: if (IsEnableCameraUI) { _cameraUIs.Add(types[i], Activator.CreateInstance(types[i]) as UILogic); } break; case UIType.World: if (IsEnableWorldUI) { if (!_worldUIs.ContainsKey(attribute.WorldUIDomainName)) { _worldUIs.Add(attribute.WorldUIDomainName, new WorldUIDomain(attribute.WorldUIDomainName, _worldUIRoot.FindChildren("CanvasTem"))); } _worldUIs[attribute.WorldUIDomainName].Injection(types[i]); } break; } } else { GlobalTools.LogError(string.Format("创建UI逻辑对象失败:UI逻辑类 {0} 丢失 UIResourceAttribute 标记!", types[i].Name)); } } } }
/// <summary> /// 生成任务内容列表 /// </summary> private void GenerateTaskList() { if (_taskContentList == null) { _taskContentList = new ReorderableList(_asset.Content, typeof(TaskContentBase), true, true, false, false); _taskContentList.drawHeaderCallback = (Rect rect) => { Rect sub = rect; sub.Set(rect.x, rect.y, 200, rect.height); GUI.Label(sub, "Task Content List:"); sub.Set(rect.x + rect.width - 20, rect.y - 2, 20, 20); if (GUI.Button(sub, _addGUIContent, "InvisibleButton")) { GenericMenu gm = new GenericMenu(); gm.AddItem(new GUIContent("<New Task Content Script>"), false, () => { NewTaskContentScript(); }); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (type.IsSubclassOf(typeof(TaskContentBase))) { string contentName = type.FullName; TaskContentAttribute attri = type.GetCustomAttribute <TaskContentAttribute>(); if (attri != null) { contentName = attri.Name; } gm.AddItem(new GUIContent(contentName), false, () => { AddContent(type); }); } } gm.ShowAsContext(); } }; _taskContentList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { if (index >= 0 && index < _asset.Content.Count) { Rect sub = rect; GUI.Label(sub, (index + 1).ToString() + "." + _asset.Content[index].Name); if (isActive) { sub.Set(rect.x + rect.width - 40, rect.y, 20, 20); if (GUI.Button(sub, _editGUIContent, "InvisibleButton")) { MonoScript monoScript = MonoScript.FromScriptableObject(_asset.Content[index]); AssetDatabase.OpenAsset(monoScript); } sub.Set(rect.x + rect.width - 20, rect.y, 20, 20); if (GUI.Button(sub, _deleteGUIContent, "InvisibleButton")) { if (EditorUtility.DisplayDialog("Prompt", "Are you sure delete task [" + _asset.Content[index].Name + "]?", "Yes", "No")) { DeleteContent(index); } } } } }; _taskContentList.onSelectCallback = (ReorderableList list) => { if (list.index >= 0 && list.index < _asset.Content.Count) { _currentContent = _asset.Content[list.index]; } else { _currentContent = null; } }; _taskContentList.drawElementBackgroundCallback = (Rect rect, int index, bool isActive, bool isFocused) => { if (index >= 0 && index < _asset.Content.Count) { if (Event.current.type == EventType.Repaint) { GUIStyle gUIStyle = (index % 2 != 0) ? "CN EntryBackEven" : "CN EntryBackodd"; gUIStyle = (!isActive && !isFocused) ? gUIStyle : "RL Element"; gUIStyle.Draw(rect, false, isActive, isActive, isFocused); if (_asset.Content[index].IsDone) { GUI.backgroundColor = Color.green; GUI.Box(rect, ""); GUI.backgroundColor = Color.white; } } } }; } }
protected override void OnInspectorDefaultGUI() { base.OnInspectorDefaultGUI(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("UI Manager, Control all UILogic Entity!", MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); Toggle(Target.IsEnableOverlayUI, out Target.IsEnableOverlayUI, "Is Enable Overlay UI"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); Toggle(Target.IsEnableCameraUI, out Target.IsEnableCameraUI, "Is Enable Camera UI"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); Toggle(Target.IsEnableWorldUI, out Target.IsEnableWorldUI, "Is Enable World UI"); GUILayout.EndHorizontal(); GUILayout.BeginVertical("Box"); GUILayout.BeginHorizontal(); GUILayout.Label("Define UI", "BoldLabel"); GUILayout.EndHorizontal(); for (int i = 0; i < Target.DefineUINames.Count; i++) { GUILayout.BeginVertical("HelpBox"); GUILayout.BeginHorizontal(); GUILayout.Label("Type", GUILayout.Width(40)); if (GUILayout.Button(Target.DefineUINames[i], "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int m = 0; m < types.Count; m++) { if (types[m].IsSubclassOf(typeof(UILogicBase))) { int j = i; int n = m; if (Target.DefineUINames.Contains(types[n].FullName)) { gm.AddDisabledItem(new GUIContent(types[n].FullName)); } else { gm.AddItem(new GUIContent(types[n].FullName), Target.DefineUINames[j] == types[n].FullName, () => { Undo.RecordObject(target, "Set Define UI Name"); Target.DefineUINames[j] = types[n].FullName; HasChanged(); }); } } } gm.ShowAsContext(); } if (GUILayout.Button("Delete", "Minibutton", GUILayout.Width(50))) { Undo.RecordObject(target, "Delete Define UI"); Target.DefineUINames.RemoveAt(i); Target.DefineUIEntitys.RemoveAt(i); HasChanged(); continue; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Entity", GUILayout.Width(40)); GameObject entity = Target.DefineUIEntitys[i]; ObjectField(Target.DefineUIEntitys[i], out entity, false, ""); if (entity != Target.DefineUIEntitys[i]) { Target.DefineUIEntitys[i] = entity; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("New", "Minibutton")) { Undo.RecordObject(target, "New Define UI"); Target.DefineUINames.Add("<None>"); Target.DefineUIEntitys.Add(null); HasChanged(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); }
public override void OnInspectorGUI() { GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Activated Procedure Count:" + _target.ActivatedProcedures.Count, MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUI.enabled = _target.DefaultProcedure != ""; GUILayout.Label("Default: " + _target.DefaultProcedure); GUI.enabled = true; GUILayout.FlexibleSpace(); GUI.enabled = _target.ActivatedProcedures.Count > 0; if (GUILayout.Button("Set Default", "MiniPopup")) { GenericMenu gm = new GenericMenu(); for (int i = 0; i < _target.ActivatedProcedures.Count; i++) { int j = i; gm.AddItem(new GUIContent(_target.ActivatedProcedures[j]), _target.DefaultProcedure == _target.ActivatedProcedures[j], () => { Undo.RecordObject(target, "Set Default Procedure"); _target.DefaultProcedure = _target.ActivatedProcedures[j]; this.HasChanged(); }); } gm.ShowAsContext(); } GUI.enabled = true; GUILayout.EndHorizontal(); for (int i = 0; i < _target.ActivatedProcedures.Count; i++) { GUILayout.BeginHorizontal(); GUILayout.Label((i + 1) + "." + _target.ActivatedProcedures[i]); GUILayout.FlexibleSpace(); if (GUILayout.Button("Edit", "MiniButton")) { if (_procedureTypes.ContainsKey(_target.ActivatedProcedures[i])) { UnityEngine.Object classFile = AssetDatabase.LoadAssetAtPath(_procedureTypes[_target.ActivatedProcedures[i]], typeof(TextAsset)); if (classFile) { AssetDatabase.OpenAsset(classFile); } else { GlobalTools.LogError("没有找到 " + _target.ActivatedProcedures[i] + " 脚本文件!"); } } else { GlobalTools.LogError("没有找到 " + _target.ActivatedProcedures[i] + " 脚本文件!"); } } if (GUILayout.Button("Delete", "MiniButton")) { Undo.RecordObject(target, "Delete Procedure"); if (_target.DefaultProcedure == _target.ActivatedProcedures[i]) { _target.DefaultProcedure = ""; } _target.ActivatedProcedures.RemoveAt(i); if (_target.DefaultProcedure == "" && _target.ActivatedProcedures.Count > 0) { _target.DefaultProcedure = _target.ActivatedProcedures[0]; } this.HasChanged(); } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Add Procedure", "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(Procedure)) { int j = i; if (_target.ActivatedProcedures.Contains(types[j].FullName)) { gm.AddDisabledItem(new GUIContent(types[j].FullName)); } else { gm.AddItem(new GUIContent(types[j].FullName), false, () => { Undo.RecordObject(target, "Add Procedure"); _target.ActivatedProcedures.Add(types[j].FullName); if (_target.DefaultProcedure == "") { _target.DefaultProcedure = _target.ActivatedProcedures[0]; } this.HasChanged(); }); } } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); }
/// <summary> /// 任务点GUI事件处理 /// </summary> private void OnPointEventHandle() { if (_currentContent != null && Event.current != null) { Vector2 mousePosition = Event.current.mousePosition; switch (Event.current.type) { case EventType.MouseDown: if (Event.current.button == 1) { GenericMenu gm = new GenericMenu(); gm.AddItem(new GUIContent("<New Task Point Script>"), false, () => { NewTaskPointScript(); }); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { Type type = types[i]; if (type.IsSubclassOf(typeof(TaskPointBase))) { string contentName = type.FullName; TaskPointAttribute attri = type.GetCustomAttribute <TaskPointAttribute>(); if (attri != null) { contentName = attri.Name; } gm.AddItem(new GUIContent("Add Task Point/" + contentName), false, () => { AddPoint(type, mousePosition); }); } } EditorGlobalTools.BeginNoRepeatNaming(); for (int i = 0; i < _currentContent.Points.Count; i++) { TaskPointBase point = _currentContent.Points[i]; gm.AddItem(new GUIContent(EditorGlobalTools.GetNoRepeatName("Find Task Point/" + point.Name)), false, () => { FindPoint(point); }); } gm.ShowAsContext(); } break; case EventType.MouseDrag: if (Event.current.button == 2) { for (int i = 0; i < _currentContent.Points.Count; i++) { _currentContent.Points[i].OnDrag(Event.current.delta); } GUI.changed = true; } break; } for (int i = 0; i < _currentContent.Points.Count; i++) { _currentContent.Points[i].OnPointEventHandle(Event.current, _currentContent); } } }
protected override void OnInspectorDefaultGUI() { base.OnInspectorDefaultGUI(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Network Manager, implementing basic network client with socket!", MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); TextField(Target.ServerIP, out Target.ServerIP, "Server IP"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); IntField(Target.ServerPort, out Target.ServerPort, "Server Port"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); TextField(Target.ClientIP, out Target.ClientIP, "Client IP"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); IntField(Target.ClientPort, out Target.ClientPort, "Client Port"); GUILayout.EndHorizontal(); GUILayout.BeginVertical(EditorGlobalTools.Styles.Box); GUILayout.BeginHorizontal(); GUILayout.Label("Enabled Channels:"); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); for (int i = 0; i < Target.ChannelTypes.Count; i++) { GUILayout.BeginHorizontal(); GUILayout.Label((i + 1) + "." + Target.ChannelTypes[i]); GUILayout.FlexibleSpace(); if (GUILayout.Button("Delete", EditorStyles.miniButton)) { Undo.RecordObject(target, "Delete Channel"); Target.ChannelTypes.RemoveAt(i); HasChanged(); } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Add Channel", EditorGlobalTools.Styles.MiniPopup)) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].IsSubclassOf(typeof(ProtocolChannelBase))) { int j = i; if (Target.ChannelTypes.Contains(types[j].FullName)) { gm.AddDisabledItem(new GUIContent(types[j].FullName)); } else { gm.AddItem(new GUIContent(types[j].FullName), false, () => { Undo.RecordObject(target, "Add Channel"); Target.ChannelTypes.Add(types[j].FullName); HasChanged(); }); } } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); }
public override void OnInspectorGUI() { GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("State Count:" + _target.StateNames.Count, MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Name: "); this.TextField(_target.Name, out _target.Name); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Data: "); if (GUILayout.Button(_target.Data, "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); gm.AddItem(new GUIContent("<None>"), _target.Data == "<None>", () => { Undo.RecordObject(target, "Set FSM Data Class"); _target.Data = "<None>"; this.HasChanged(); }); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(FSMData)) { int j = i; gm.AddItem(new GUIContent(types[j].FullName), _target.Data == types[j].FullName, () => { Undo.RecordObject(target, "Set FSM Data Class"); _target.Data = types[j].FullName; this.HasChanged(); }); } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUI.enabled = _target.DefaultStateName != ""; GUILayout.Label("Default: " + _target.DefaultStateName); GUI.enabled = true; GUILayout.FlexibleSpace(); GUI.enabled = _target.StateNames.Count > 0; if (GUILayout.Button("Set Default", "MiniPopup")) { GenericMenu gm = new GenericMenu(); for (int i = 0; i < _target.StateNames.Count; i++) { int j = i; gm.AddItem(new GUIContent(_target.StateNames[j]), _target.DefaultStateName == _target.StateNames[j], () => { Undo.RecordObject(target, "Set FSM Default State"); _target.DefaultState = _target.States[j]; _target.DefaultStateName = _target.StateNames[j]; this.HasChanged(); }); } gm.ShowAsContext(); } GUI.enabled = true; GUILayout.EndHorizontal(); for (int i = 0; i < _target.StateNames.Count; i++) { GUILayout.BeginHorizontal(); GUILayout.Label(string.Format("{0}.{1} [{2}]", i + 1, _target.StateNames[i], _target.States[i])); GUILayout.FlexibleSpace(); if (GUILayout.Button("Delete", "MiniButton")) { Undo.RecordObject(target, "Delete FSM State"); if (_target.DefaultStateName == _target.StateNames[i]) { _target.DefaultState = ""; _target.DefaultStateName = ""; } _target.States.RemoveAt(i); _target.StateNames.RemoveAt(i); if (_target.DefaultStateName == "" && _target.StateNames.Count > 0) { _target.DefaultState = _target.States[0]; _target.DefaultStateName = _target.StateNames[0]; } this.HasChanged(); } GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(); if (GUILayout.Button("Add State", "MiniPopup")) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int i = 0; i < types.Count; i++) { if (types[i].BaseType == typeof(FiniteState)) { int j = i; string stateName = types[j].FullName; object[] atts = types[j].GetCustomAttributes(false); foreach (object att in atts) { FiniteStateNameAttribute fsmAtt = att as FiniteStateNameAttribute; if (fsmAtt != null) { stateName = fsmAtt.Name; break; } } if (_target.States.Contains(types[j].FullName)) { gm.AddDisabledItem(new GUIContent(stateName)); } else { gm.AddItem(new GUIContent(stateName), false, () => { Undo.RecordObject(target, "Add FSM State"); _target.States.Add(types[j].FullName); _target.StateNames.Add(stateName); if (_target.DefaultStateName == "") { _target.DefaultState = _target.States[0]; _target.DefaultStateName = _target.StateNames[0]; } this.HasChanged(); }); } } } gm.ShowAsContext(); } GUILayout.EndHorizontal(); }
protected override void OnInspectorDefaultGUI() { base.OnInspectorDefaultGUI(); GUILayout.BeginHorizontal(); EditorGUILayout.HelpBox("Entity Manager, Control all EntityLogic!", MessageType.Info); GUILayout.EndHorizontal(); GUILayout.BeginVertical(EditorGlobalTools.Styles.Box); GUILayout.BeginHorizontal(); GUILayout.Label("Define Entity:"); GUILayout.EndHorizontal(); for (int i = 0; i < Target.DefineEntityNames.Count; i++) { GUILayout.BeginVertical(EditorStyles.helpBox); GUILayout.BeginHorizontal(); GUILayout.Label("Type", GUILayout.Width(40)); if (GUILayout.Button(Target.DefineEntityNames[i], EditorGlobalTools.Styles.MiniPopup)) { GenericMenu gm = new GenericMenu(); List <Type> types = GlobalTools.GetTypesInRunTimeAssemblies(); for (int m = 0; m < types.Count; m++) { if (types[m].IsSubclassOf(typeof(EntityLogicBase))) { int j = i; int n = m; if (Target.DefineEntityNames.Contains(types[n].FullName)) { gm.AddDisabledItem(new GUIContent(types[n].FullName)); } else { gm.AddItem(new GUIContent(types[n].FullName), Target.DefineEntityNames[j] == types[n].FullName, () => { Undo.RecordObject(target, "Set Define Entity Name"); Target.DefineEntityNames[j] = types[n].FullName; HasChanged(); }); } } } gm.ShowAsContext(); } GUI.backgroundColor = Color.red; if (GUILayout.Button("Delete", EditorStyles.miniButton, GUILayout.Width(50))) { Undo.RecordObject(target, "Delete Define Entity"); Target.DefineEntityNames.RemoveAt(i); Target.DefineEntityTargets.RemoveAt(i); HasChanged(); continue; } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Entity", GUILayout.Width(40)); GameObject entity = Target.DefineEntityTargets[i]; ObjectField(Target.DefineEntityTargets[i], out entity, false, ""); if (entity != Target.DefineEntityTargets[i]) { Target.DefineEntityTargets[i] = entity; } GUILayout.EndHorizontal(); GUILayout.EndVertical(); } GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("New", EditorStyles.miniButton)) { Undo.RecordObject(target, "New Define Entity"); Target.DefineEntityNames.Add("<None>"); Target.DefineEntityTargets.Add(null); HasChanged(); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); }