public void AddFuncToScript(string funcName) { if (!_dictElements.ContainsKey(funcName)) { var funcInfo = new ScriptElementInfo(); funcInfo._name = funcName; funcInfo._bGlobal = false; funcInfo._module = "M"; funcInfo._type = EScriptElementType.Function; _dictElements.Add(funcName, funcInfo); } }
private static void addFunToElement(Dictionary <string, ScriptElementInfo> dictElements, string funcName) { if (!dictElements.ContainsKey(funcName)) { var funcInfo = new ScriptElementInfo(); funcInfo._name = funcName; funcInfo._bGlobal = false; funcInfo._module = "M"; funcInfo._type = EScriptElementType.Function; dictElements.Add(funcName, funcInfo); } }
//绘制窗口内容 void OnGUI() { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("*类名"); _class = EditorGUILayout.TextField(_class, GUILayout.Width(300), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("*描述"); _description = EditorGUILayout.TextField(_description, GUILayout.Width(300), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("全局空间可见"); _bGlobal = EditorGUILayout.Toggle(_bGlobal); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("模块导出"); _bModuleExport = EditorGUILayout.Toggle(_bModuleExport); EditorGUILayout.EndHorizontal(); EditorGUILayout.HelpBox(_strHelpMsg, _msgType, true); //操作按钮 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("添加", GUILayout.Width(100), GUILayout.ExpandWidth(true))) { if (string.IsNullOrEmpty(_class) || string.IsNullOrEmpty(_description)) { _strHelpMsg = "类名和注释不能为空"; _msgType = MessageType.Error; return; } if (_dictInfos.ContainsKey(_class)) { _strHelpMsg = "已存在的类名"; _msgType = MessageType.Error; return; } ScriptElementInfo eleInfo = new ScriptElementInfo(); eleInfo._type = EScriptElementType.Table; eleInfo._name = _class; eleInfo._description = _description; eleInfo._bGlobal = _bGlobal; eleInfo._module = _bModuleExport ? _module : ""; _dictInfos.Add(eleInfo._name, eleInfo); //刷新父窗口 if (_parentWindow != null) { _parentWindow.Repaint(); } this.Close(); } if (GUILayout.Button("取消", GUILayout.Width(100), GUILayout.ExpandWidth(true))) { this.Close(); } EditorGUILayout.EndHorizontal(); }
//绘制窗口内容 void OnGUI() { EditorGUILayout.HelpBox(_strHelpMsg, _msgType, true); EditorGUILayout.Separator(); EditorGUILayout.LabelField("目录:" + _strDirectory); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("*文件名"); _strFileName = EditorGUILayout.TextField(_strFileName, GUILayout.Width(300), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("*脚本描述"); _strSummary = EditorGUILayout.TextField(_strSummary, GUILayout.Width(300), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("*作者"); _strAuthor = EditorGUILayout.TextField(_strAuthor, GUILayout.Width(300), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("模块名"); _strModule = EditorGUILayout.TextField(_strModule, GUILayout.Width(300), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("脚本类 "); if (GUILayout.Button("添加", GUILayout.Width(100))) { var classEdtorWin = (ScriptClassEditorInfoWindow)EditorWindow.GetWindow(typeof(ScriptClassEditorInfoWindow)); classEdtorWin.name = "类信息"; classEdtorWin.initialize(_strModule, _dictElements, this); } if (GUILayout.Button("删除", GUILayout.Width(100))) { var keys = new List <string>(_elementsToggleInfo.Keys); foreach (var k in keys) { if (!_elementsToggleInfo[k]) { _dictElements.Remove(k); _elementsToggleInfo.Remove(k); } } } EditorGUILayout.EndHorizontal(); ////////生成类列表信息 //菜单 EditorGUILayout.BeginHorizontal(); _bSelectAll = EditorGUILayout.Toggle(_bSelectAll, GUILayout.Width(30)); //选中 EditorGUILayout.LabelField("名称", GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField("属性", GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField("类型", GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField("模块", GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); //信息 _v2ScrollPos = EditorGUILayout.BeginScrollView(_v2ScrollPos); foreach (var kvp in _dictElements) { var elementInfo = kvp.Value; string strAttr = elementInfo._bGlobal ? "global" : "local"; string strName = elementInfo._name; string strTypeName = elementInfo._type.ToString(); string strModule = string.IsNullOrEmpty(elementInfo._module) ? "NULL" : elementInfo._module; //保存toggle信息 bool bSaved = false; if (_elementsToggleInfo.ContainsKey(strName)) { bSaved = _elementsToggleInfo[strName]; } else { _elementsToggleInfo.Add(strName, bSaved); } //是否全选 bool bToggle = _bSelectAll ? _bSelectAll : bSaved; EditorGUILayout.BeginHorizontal(); bToggle = EditorGUILayout.Toggle(bToggle, GUILayout.Width(30)); //选中 EditorGUILayout.LabelField(strName, GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField(strAttr, GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField(strTypeName, GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField(strModule, GUILayout.Width(30), GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); if (_bSelectAll && !bToggle) { _bSelectAll = false; } //全选状态选中一个,取消全选 _elementsToggleInfo[strName] = bToggle; } EditorGUILayout.EndScrollView(); //操作按钮 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("生成", GUILayout.Width(100), GUILayout.ExpandWidth(true))) { if (string.IsNullOrEmpty(_strFileName) || string.IsNullOrEmpty(_strSummary) || string.IsNullOrEmpty(_strAuthor)) { _strHelpMsg = "信息不完整"; _msgType = MessageType.Error; return; } //还原提示信息 _strHelpMsg = "带有*标识的为必填项"; _msgType = MessageType.Info; if (_dictElements.Count == 0) { ScriptElementInfo dft = new ScriptElementInfo(); dft._name = "DefaultTable"; dft._description = "默认生成的类"; dft._type = EScriptElementType.Table; dft._bGlobal = false; _dictElements.Add(dft._name, dft); } //生成脚本 string file = _strDirectory + "/" + _strFileName + ".lua"; CustomLuaMenu.generateScriptFile(file, _strSummary, _strAuthor, _strModule, _dictElements); } if (GUILayout.Button("取消", GUILayout.Width(100), GUILayout.ExpandWidth(true))) { this.Close(); } EditorGUILayout.EndHorizontal(); }