/// <summary> /// 从《初级颗粒数据》json 中读取数据,希望处理的功能 /// </summary> public void AboutPrimaryData() { if (granuleDic1.Count != 0) { return; } SelfTools.Instance().ShowLibraryData(); // 为 PrimaryGranuleList 赋值 // json 文件路径 var dataPath = Application.dataPath + "/AllenSuTools/Data/初级颗粒数据.txt"; if (!File.Exists(dataPath)) { WindowTips("JSON 文件不存在!!!"); return; } // 先从 json 中读取数据 TextReader tr = File.OpenText(dataPath); var primary = JsonMapper.ToObject <Primary>(tr.ReadToEnd()); tr.Dispose(); tr.Close(); // 为相关字典赋值 foreach (var primaryData in primary.PrimaryData) { if (Equals(primaryData.是否已上架, "0")) { granuleDic0.Add(primaryData.总序, primaryData.全称); // 未上架颗粒名称字典 } else if (Equals(primaryData.是否已上架, "1")) { granuleDic1.Add(primaryData.总序, primaryData.全称); // 已上架颗粒名称字典 } else { Debug.Log("均不属于《未上架》和《已上架》颗粒的名称:" + primaryData.全称); } // 建模没法的(不包含未上架的以及名称是"未记录该颗粒") // if (Equals(primaryData.建模是否已发,"0") && (!Equals(primaryData.是否已上架, "0"))) // { // if (!Equals(primaryData.全称, "未记录该颗粒")) // { // WriteToTxt(TxtDirPath, "建模尚未发的颗粒名称", primaryData.全称); // } // } if (Equals(primaryData.建模是否已发, "1")) { ModelPersonHadSendDic.Add(primaryData.总序, primaryData.全称); // 建模已发模型名称字典 } } // 零件库中初级颗粒的名称字典 var primaryGranuleNameDic = new Dictionary <int, string>(); foreach (var granule in PrimaryGranuleList) { primaryGranuleNameDic.Add(granule.transform.GetSiblingIndex(), granule.name); } // 检测功能一:《零件库名称字典》要和《已上架颗粒名称字典》的颗粒名称要一致,如果有不一样的,则利用差集求两个字典的差值 var diffNameGroup = granuleDic1.Values.ToList().Except(primaryGranuleNameDic.Values.ToList()); var granuleNames = diffNameGroup as string[] ?? diffNameGroup.ToArray(); if (granuleNames.Length != 0) { foreach (var granuleName in granuleNames) { Debug.Log("编码表有,但零件库没有的颗粒名称 " + granuleName); } } // 检测功能二:零件库初级颗粒的相关处理 foreach (var granule in PrimaryGranuleList) { // 处理一:检查零件库中的错误名称(不包含组合颗粒) if (!granuleDic1.ContainsValue(granule.name) && !granule.name.Contains("组合")) { Debug.Log("零件库错误编码的颗粒名称:" + granule.name); } // 处理二:零件库已上架,但在编码表中依然显示 0 的颗粒: if (granuleDic0.ContainsValue(granule.name)) { Debug.Log("零件库已上架,但在编码表中依然显示 0 的颗粒:" + granule.name); } } // 比较上次与本次待定颗粒的差值名称 CompareDaiDingGranule(); // 输出模型已发,但我这边还未做的颗粒名称 // foreach (var granuleName in DaiDingDic.Values) // { // if (ModelPersonHadSendDic.ContainsValue(granuleName)) // { // WriteToTxt(TxtDirPath,"模型已发,但我这边还未做的颗粒名称",granuleName); // } // } }
void OnGUI() { scrowPos = GUILayout.BeginScrollView(scrowPos, GUILayout.Width(position.width), GUILayout.Height(position.height)); EditorGUI.BeginChangeCheck(); // 设置标题语(用途:错行) EditorGUILayout.HelpBox("木叶飞舞之处,火亦生生不息", MessageType.Info, true); whichOneSelect = GUI.Toolbar(new Rect(5, 5, _topInfoType.Length * 70, 37), whichOneSelect, _topInfoType); switch (whichOneSelect) { case 0: #region 关键部位 #region 一:克隆关键部位 GUILayout.Label("一:克隆关键部位", TitleStyle()); GUILayout.Space(3); // 默认间隔 SelfBuWei.Instance().ModelSpace = SelfBuWei.Instance().GeneralSpace; GUILayout.Label("A:选择关键部位间隔", SetGuiStyle(Color.gray, 14)); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); // 指定间隔的值 if (GUILayout.Button("1:正常颗粒间隔值=0.8")) { SelfBuWei.Instance().IsClickChangeSpace = false; } else if (GUILayout.Button("2:中颗粒间隔值=1.6")) { SelfBuWei.Instance().IsClickChangeSpace = true; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ // ------------ 二:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("提示:当前关键部位间隔的值是", SetGuiStyle(Color.black, 14)); SelfBuWei.Instance().ModelSpace = SelfBuWei.Instance().IsClickChangeSpace ? SelfBuWei.Instance().MediumSpace : SelfBuWei.Instance().GeneralSpace; GUILayout.TextField(SelfBuWei.Instance().ModelSpace + ""); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 二:结束垂直画盒子 ------------ GUILayout.Label("B:选择克隆关键部位方式", SetGuiStyle(Color.gray, 14)); // ------------ 三:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); // 指定间隔的值 if (GUILayout.Button("1:单行克隆")) { SelfBuWei.Instance().IsMoreLine = false; SelfBuWei.Instance().ShowCloneWay = "单行克隆"; } else if (GUILayout.Button("2:多行克隆")) { SelfBuWei.Instance().IsMoreLine = true; SelfBuWei.Instance().ShowCloneWay = "多行克隆"; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 三:结束垂直画盒子 ------------ // ------------ 四:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("提示:当前的克隆方式为", SetGuiStyle(Color.black, 14)); GUILayout.TextField(SelfBuWei.Instance().ShowCloneWay); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 四:结束垂直画盒子 ------------ // ------------ 五:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Label("沿着坐标轴 正 / 负 方向克隆多少个(不含自身)", SetGuiStyle(Color.red, 14)); GUILayout.Space(5); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("x 轴正方向", SetGuiStyle(Color.black, 14)); SelfBuWei.Instance().CloneNumByAxisX = int.Parse(GUILayout.TextField(SelfBuWei.Instance().CloneNumByAxisX.ToString())); GUILayout.Space(50); GUILayout.Label("z 轴正方向", SetGuiStyle(Color.black, 14)); SelfBuWei.Instance().CloneNumByAxisZ = int.Parse(GUILayout.TextField(SelfBuWei.Instance().CloneNumByAxisZ.ToString())); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(5); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("x 轴负方向", SetGuiStyle(Color.black, 14)); SelfBuWei.Instance().CloneNumByAxisXFu = int.Parse(GUILayout.TextField(SelfBuWei.Instance().CloneNumByAxisXFu.ToString())); GUILayout.Space(50); GUILayout.Label("z 轴负方向", SetGuiStyle(Color.black, 14)); SelfBuWei.Instance().CloneNumByAxisZFu = int.Parse(GUILayout.TextField(SelfBuWei.Instance().CloneNumByAxisZFu.ToString())); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 五:结束垂直画盒子 ------------ if (GUILayout.Button("开始克隆关键部位")) { SelfBuWei.Instance().CloneBuWeiOneByOne(); } // ------------ 六:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("注:可以手动改变关键部位名称下标的值", SetGuiStyle(Color.black, 14)); CommonFun.CurrentIndexNum = int.Parse(GUILayout.TextField(CommonFun.CurrentIndexNum.ToString())); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); //------------ 六:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); //设置上下间隔 #region 二:特殊部位坐标的计算(+-0.4类型) GUILayout.Label("二:特殊部位坐标的计算", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); //第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("x轴")) { SelfBuWei.Instance().IsClickX = true; SelfBuWei.Instance().IsClickZ = false; SelfBuWei.Instance().ShowClickAxis = "x轴"; } else if (GUILayout.Button("z轴")) { SelfBuWei.Instance().IsClickZ = true; SelfBuWei.Instance().IsClickX = false; SelfBuWei.Instance().ShowClickAxis = "z轴"; } if (GUILayout.Button("+0.4")) { SelfBuWei.Instance().AddValueNum = true; SelfBuWei.Instance().ReduceValueNum = false; SelfBuWei.Instance().ShowValueNum = "+0.4"; } else if (GUILayout.Button("-0.4")) { SelfBuWei.Instance().ReduceValueNum = true; SelfBuWei.Instance().AddValueNum = false; SelfBuWei.Instance().ShowValueNum = "-0.4"; } if (GUILayout.Button("都减0.4")) { SelfBuWei.Instance().SubtractAllValue(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(5); // 第二组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.TextField("当前操作方式:" + SelfBuWei.Instance().ShowClickAxis + " " + SelfBuWei.Instance().ShowValueNum); EditorGUILayout.EndVertical(); // 第二组垂直排版结束 GUILayout.Space(3); GUILayout.EndVertical(); //------------ 一:结束垂直画盒子 ------------ if (GUILayout.Button("点击设定新坐标")) { SelfBuWei.Instance().SpecialAxis(); } #endregion GUILayout.Space(8); #region :对称克隆关键部位 GUILayout.Label("三:对称克隆关键部位", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); //第一组垂直排版开始 EditorGUILayout.BeginVertical(); if (GUILayout.Button("对称克隆关键部位")) { SelfBuWei.Instance().SymmetryCloneBuWei(); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 四:生成默认关键部位、Box GUILayout.Label("四:生成空物体、Normal Box", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:GameObject")) { SelfBuWei.Instance().CreateDefaultObj(); } if (GUILayout.Button("2:Normal Box")) { SelfBuWei.Instance().CreateDefaultNormalBox(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 测试按钮 GUILayout.Label("测试按钮", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); if (GUILayout.Button("测试按钮")) { JustTest.Instance().JustTestBtn(); } GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #endregion break; case 1: #region 模型相关 #region 前提 #region 前提一:选择颗粒大类 GUILayout.Label("前提一:选择颗粒大类", TitleStyle()); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); // 设置首写字母按钮 SelfModel.Instance().IsOpenGranuleToggle = EditorGUILayout.Toggle("点击选择颗粒种类 → → → ", SelfModel.Instance().IsOpenGranuleToggle); if (SelfModel.Instance().IsOpenGranuleToggle) { // 每次点击该 Toggle 按钮时都让ShowGranuleType为空 CommonFun.ShowGranuleType = string.Empty; SelfModel.Instance().SetTypeBtn(); } // 是否需要记住颗粒路径 SelfModel.Instance().IsRememberGranuleType = EditorGUILayout.Toggle("记住颗粒大类", SelfModel.Instance().IsRememberGranuleType); if (SelfModel.Instance().IsRememberGranuleType) { // 记住颗粒大类前确保名字不为空 if (Equals(CommonFun.ShowGranuleType, string.Empty)) { WindowTips("当前颗粒大类为空,无需记住!!!"); SelfModel.Instance().IsRememberGranuleType = false; return; } // 存储颗粒大类名称 PlayerPrefs.SetString("颗粒大类名称", CommonFun.ShowGranuleType); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第二组垂直排版开始 EditorGUILayout.BeginVertical(); if (SelfModel.Instance().ResultList.Count > 1) { // 第三组水平排版开始 EditorGUILayout.BeginHorizontal(); SelfModel.Instance().SetGranuleName(); EditorGUILayout.EndHorizontal(); // 第三组水平排版结束 } // 颗粒大类有值就清除数据 if (CommonFun.ShowGranuleType != string.Empty) { SelfModel.Instance().ClearGranuleData(); SelfModel.Instance().IsOpenGranuleToggle = false; } GUILayout.Label("1、当前颗粒类别", SetGuiStyle(Color.black, 14)); CommonFun.ShowGranuleType = PlayerPrefs.HasKey("颗粒大类名称") ? GUILayout.TextField(PlayerPrefs.GetString("颗粒大类名称")) : GUILayout.TextField(CommonFun.ShowGranuleType); EditorGUILayout.EndVertical(); // 第二组垂直排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 前提二:指定模型外部路径 GUILayout.Label("前提二:指定模型外部路径", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("1、外部模型路径", SetGuiStyle(Color.black, 14)); // SelfModel.Instance().IsRememberOutModelPath = EditorGUILayout.Toggle("记住模型路径", SelfModel.Instance().IsRememberOutModelPath); SelfModel.Instance().ModelFolderPath = PlayerPrefs.HasKey("外部模型路径") ? GUILayout.TextField(PlayerPrefs.GetString("外部模型路径")): GUILayout.TextField(SelfModel.Instance().ModelFolderPath); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:记住模型路径")) { SelfModel.Instance().IsRememberOutModelPath = true; // 记住模型路径前确保路径不为空 if (Equals(SelfModel.Instance().ModelFolderPath, string.Empty)) { WindowTips("当前路径为空,无需记住!!!"); SelfModel.Instance().IsRememberOutModelPath = false; return; } // 存储颗粒大类名称 PlayerPrefs.SetString("外部模型路径", SelfModel.Instance().ModelFolderPath); } if (GUILayout.Button("2:取消记住路径")) { if (PlayerPrefs.HasKey("外部模型路径")) { PlayerPrefs.DeleteKey("外部模型路径"); } } EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 前提三:给一个默认的操作方式 // 给一个默认的操作方式 SelfModel.Instance().ShowWay = "新上架颗粒"; GUILayout.Label("前提三:选择操作方式", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); // 重新指定操作方式 if (GUILayout.Button("一:新上架颗粒")) { SelfModel.Instance().isAddNewGranuleWay = true; } else if (GUILayout.Button("二:更换旧模型")) { SelfModel.Instance().isAddNewGranuleWay = false; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion #endregion GUILayout.Space(8); #region 根据操作方式,绘制不同的GUI if (SelfModel.Instance().isAddNewGranuleWay) { DrawAddNewGranuleWayGui(); } else { DrawReplaceOldGranuleWayGui(); } #endregion GUILayout.Space(8); #region 功能一:复制模型全称、半称 GUILayout.Label("一:复制模型名全称、半称", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:全称")) { Clipboard.SetText(Selection.activeGameObject.name); } if (GUILayout.Button("2:半称")) { var str = Selection.activeGameObject.name; var flag = '&'; // 获取到 & 后面的内容 var text = str.Substring(str.IndexOf(flag) + 1); Clipboard.SetText(text); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 功能二:临时更换物件上的材质_2 GUILayout.Label("二:临时更换材质_2", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); if (GUILayout.Button(SelfModel.Instance().IsHaveReplace ? "1、替换为《原材质_2》" : "2、替换为《临时材质》")) { SelfModel.Instance().ReplaceMaterial2(); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #endregion break; case 2: #region 常用工具 #region 一:3 个顶点确定圆心 GUILayout.Label("一:三个顶点确定圆心", TitleStyle()); GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("提示信息", SetGuiStyle(Color.black, 14)); GUILayout.TextField(SelfCollider.Instance().WhichTimeTips); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); if (GUILayout.Button("点击 3 次按钮,获取圆心")) { SelfCollider.Instance().CreateCenterOfCircle(); } GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 二:计算 Length 的值 GUILayout.Label("二:计算长度的值", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Label("1、获取当前哪个轴的坐标值", SetGuiStyle(Color.black, 14)); SelfTools.Instance().SetAxis = GUILayout.TextField(SelfTools.Instance().SetAxis); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("x")) { SelfTools.Instance().SetAxis = "x"; } else if (GUILayout.Button("y")) { SelfTools.Instance().SetAxis = "y"; } else if (GUILayout.Button("z")) { SelfTools.Instance().SetAxis = "z"; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 // 第二组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("2、第一个坐标值是", SetGuiStyle(Color.black, 14)); GUILayout.TextField(SelfTools.Instance().FirstValue + ""); EditorGUILayout.EndVertical(); // 第二组垂直排版结束 // 第三组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("3、长度的值等于", SetGuiStyle(Color.black, 14)); GUILayout.TextField(SelfTools.Instance().Length + ""); EditorGUILayout.EndVertical(); // 第三组垂直排版结束 // 第四组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("4、中点的值等于", SetGuiStyle(Color.black, 14)); GUILayout.TextField(SelfTools.Instance().MidPoint + ""); EditorGUILayout.EndVertical(); // 第四组垂直排版结束 // ------------ 一:结束垂直画盒子 ------------ GUILayout.EndVertical(); // 第三组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:点击两次求长度及中点的值")) { SelfTools.Instance().GetLength(); } if (GUILayout.Button("2:清空按钮")) { SelfTools.Instance().ClearValue(); // 单独重置长度和中点值,如果直接写到ClearValue函数里,在编辑器里回看不到长度,因为已经被重置 SelfTools.Instance().Length = 0; SelfTools.Instance().MidPoint = 0; } EditorGUILayout.EndHorizontal(); // 第三组水平排版结束 #endregion GUILayout.Space(8); #region :带角度模型的方向 GUILayout.Label("三:带角度模型的方向", TitleStyle()); GUILayout.Space(3); #region 1:角度 GUILayout.Label("A:角度", SetGuiStyle(Color.red, 16)); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("提示信息", SetGuiStyle(Color.black, 14)); GUILayout.TextField(SelfCollider.Instance().StrAngleTips); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); if (GUILayout.Button("点击两次按钮,计算单位向量")) { SelfCollider.Instance().AngleModel(); } GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion #endregion GUILayout.Space(8); #region 四:检查建模发过来的fbx名称的准确性 GUILayout.Label("四:检查建模发的 fbx", TitleStyle()); GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("1、要检查的文件夹路径", SetGuiStyle(Color.black, 14)); SelfTools.Instance().ModelingFbxPath = GUILayout.TextField(SelfTools.Instance().ModelingFbxPath); if (GUILayout.Button("开始检查")) { SelfTools.Instance().CheckModelingFbx(); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #endregion break; case 3: #region ToolPro #region 一:修改完旧模型的后续操作 GUILayout.Label("一:修改完旧模型的后续操作", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); #region 一:复制名称到指定 txt 文件 GUILayout.Label("1:复制颗粒名称到 txt 文件(修改一个点一次)", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // ------------ 二:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1、点击颗粒预设,添加至 txt")) { ToolPro.Instance().CopyNameToTxt(); } if (GUILayout.Button("2、打开 txt")) { ToolPro.Instance().OpenTxt(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 二:结束垂直画盒子 ------------ GUILayout.Space(3); #endregion GUILayout.Space(2); #region 二:复制fbx到指定文件夹 GUILayout.Label("2:复制fbx到文件夹,并取消待定颗粒标识(只点一次)", SetGuiStyle(Color.red, 14)); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Label("指定外部文件夹路径", SetGuiStyle(Color.black, 14)); ToolPro.Instance().OutFbxPath = GUILayout.TextField(ToolPro.Instance().OutFbxPath); // 第一组垂排版开始 EditorGUILayout.BeginVertical(); if (GUILayout.Button("点击按钮")) { ToolPro.Instance().CopyFbxToDirectory(); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(2); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 二:从 Hierarchy 批量修改颗粒预设 GUILayout.Label("二:批量处理颗粒预设", TitleStyle()); GUILayout.Space(3); #region A:选择处理方式 GUILayout.Label("A:选择处理方式", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:Hierarchy")) { ToolPro.Instance().IsHierarchy = true; } if (GUILayout.Button("2:选择颗粒预设")) { ToolPro.Instance().IsHierarchy = false; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("提示:当前修改方式为:", SetGuiStyle(Color.black, 14)); ToolPro.Instance().strTips = ToolPro.Instance().IsHierarchy ? "Hierarchy" : "选择颗粒预设"; GUILayout.TextField(ToolPro.Instance().strTips); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); #endregion #region B:自定义检查面板 // 第零组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("B:检查面板", SetGuiStyle(Color.red, 14)); if (GUILayout.Button("一键 " + (ToolPro.Instance().IsOpenAll ? "关闭" : "开启") + " 检查面板")) { ToolPro.Instance().OpenAndCloseAll(); } EditorGUILayout.EndHorizontal(); // 第零组水平排版结束 GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); ToolPro.Instance().IsCheckBlockPrefab = EditorGUILayout.Toggle(new GUIContent("1:检查《颗粒预设》", "是否检查颗粒预设的 1:位置、旋转。2:移除 KeLiData 和 GranuleModel 脚本和刚体。"), ToolPro.Instance().IsCheckBlockPrefab); ToolPro.Instance().IsCheckWu = EditorGUILayout.Toggle(new GUIContent("2:检查《物件_1》", "是否检查物件的 1:位置、旋转、比例、名称"), ToolPro.Instance().IsCheckWu); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); ToolPro.Instance().IsCheckBuWei = EditorGUILayout.Toggle(new GUIContent("3:检查《关键部位》", "是否检查关键部位的 1:旋转。2:移除 MeshRenderer 和 MeshFilter 组件。3:所有子物体的比例。"), ToolPro.Instance().IsCheckBuWei); ToolPro.Instance().IsCheckBoxCollider = EditorGUILayout.Toggle(new GUIContent("4:检查《碰撞盒》", "是否检查碰撞盒的 1:Center 转化"), ToolPro.Instance().IsCheckBoxCollider); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion #region C:一次性功能区 GUILayout.Label("C:一次性功能区", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); ToolPro.Instance().IsRenameBoxCollider = EditorGUILayout.Toggle(new GUIContent("1:碰撞盒大改版", "将父物体上的碰撞盒移动到子物体,普通碰撞盒改成 Normal Box,倾斜碰撞盒改成 Bevel Box,该项属于实现功能范围," + "只用一次即可"), ToolPro.Instance().IsRenameBoxCollider); ToolPro.Instance().IsAddSoAoCao = EditorGUILayout.Toggle(new GUIContent("2:生成 SonAoCao ", "将含有小插销的颗粒,在同位置克隆一个 SonAoCao"), ToolPro.Instance().IsAddSoAoCao); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); if (GUILayout.Button("开始")) { ToolPro.Instance().CheckGranule(); } GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ GUILayout.Space(8); #endregion GUILayout.Space(8); #region :批量处理 Hierarchy 上的颗粒大类 GUILayout.Label("三:批量处理 Hierarchy 上的颗粒大类", TitleStyle()); GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Label("A:选择预设", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); ToolPro.Instance().PrefabObj = (GameObject)EditorGUILayout.ObjectField("点击选择预设:", ToolPro.Instance().PrefabObj, typeof(GameObject), true); GUILayout.Space(3); GUILayout.Label("B:待生成子物体面板", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); ToolPro.Instance().IsCreateSingleObj = EditorGUILayout.Toggle(new GUIContent("1:添加单个子物体", "在某一颗粒大类下直接添加一个子物体"), ToolPro.Instance().IsCreateSingleObj); ToolPro.Instance().IsCreateBorder = EditorGUILayout.Toggle(new GUIContent("2:添加 《Border》", "在某一颗粒大类下添加一个 Border 子物体,负责鼠标经过移出时的边框显示"), ToolPro.Instance().IsCreateBorder); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); ToolPro.Instance().IsCreateMain = EditorGUILayout.Toggle(new GUIContent("3:添加 《Main》", "在某一颗粒大类下添加一个 Main 子物体,负责鼠标经过移出时颗粒大类 UI 的放大与缩小"), ToolPro.Instance().IsCreateMain); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); GUILayout.Label("C:删除子物体", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label(" 指定子物体名称", SetGuiStyle(Color.black, 14)); ToolPro.Instance().DeleteChildName = GUILayout.TextField(ToolPro.Instance().DeleteChildName); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ if (GUILayout.Button("点击批量处理颗粒大类")) { ToolPro.Instance().ChangeGranuleImage(); } #endregion GUILayout.Space(8); #endregion break; case 4: #region 一般工具 #region 一:批量修改“-”为“&” GUILayout.Label("一:批量修改“-”为“&”", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("1、要修改的文件路径", SetGuiStyle(Color.black, 14)); SelfTools.Instance().ChangeFileNamePath = GUILayout.TextField(SelfTools.Instance().ChangeFileNamePath); EditorGUILayout.EndVertical(); // 第一组垂直排版结束 if (GUILayout.Button("点击批量修改“-”为“&”")) { SelfTools.Instance().ChangeFileName(); } GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 二:添加,删除 MeshRenderer,MeshFilter GUILayout.Label("二:添加,移除紫色 Mesh", TitleStyle()); // ------------ 一:开始水平画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("添加紫色 Mesh")) { SelfTools.Instance().AddMesh(); } if (GUILayout.Button("移除紫色 Mesh")) { SelfTools.Instance().RemoveMesh(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 一:结束水平画盒子 ------------ #endregion GUILayout.Space(8); #region :查询文件夹下的同名fbx文件 GUILayout.Label("三:查询文件夹下的同名文件", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Space(3); GUILayout.Label("指定文件路径", SetGuiStyle(Color.black, 14)); GUILayout.Space(3); SelfTools.Instance().FilePath = GUILayout.TextField(SelfTools.Instance().FilePath); if (GUILayout.Button("查询重名文件")) { SelfTools.Instance().SameNameFile(); } GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 四:删除指定后缀名的文件 GUILayout.Label("四:删除指定后缀名的文件", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("1、要修改的文件路径", SetGuiStyle(Color.black, 14)); SelfTools.Instance().DeleteFilePath = GUILayout.TextField(SelfTools.Instance().DeleteFilePath); GUILayout.Label("2、选择要删除的文件后缀名", SetGuiStyle(Color.black, 14)); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button(".meta")) { SelfTools.Instance().SelectExtension = ".meta"; } if (GUILayout.Button(".fbx")) { SelfTools.Instance().SelectExtension = ".fbx"; } if (GUILayout.Button(".jpg")) { SelfTools.Instance().SelectExtension = ".jpg"; } if (GUILayout.Button(".png")) { SelfTools.Instance().SelectExtension = ".png"; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 SelfTools.Instance().SelectExtension = GUILayout.TextField(SelfTools.Instance().SelectExtension); if (GUILayout.Button("点击删除指定后缀名的文件")) { SelfTools.Instance().DeleteSelectExtension(); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 五:从ACE项目移动预设 GUILayout.Label("五:导出ACE预设", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:从ACE项目移动预设")) { SelfCollider.Instance().MovePrefabFromAce(); } if (GUILayout.Button("2:删除QD下的预设")) { SelfCollider.Instance().DeletePrefab(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 六:零件库相关数据显示区 GUILayout.Label("六:零件库相关数据显示区", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); #region ★、初级零件库 GUILayout.Label("★、初级零件库", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("1、总的类数:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().PrimaryTypeCount = int.Parse(GUILayout.TextField(SelfTools.Instance().PrimaryTypeCount.ToString())); GUILayout.Space(3); GUILayout.Label("2、总的个数:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().AllPrimaryGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().AllPrimaryGranuleCount.ToString())); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("3、待定颗粒:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().PrimaryUndoneGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().PrimaryUndoneGranuleCount.ToString())); GUILayout.Space(3); GUILayout.Label("4、完成颗粒:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().PrimaryCompletedGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().PrimaryCompletedGranuleCount.ToString())); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); #endregion #region ★、中级零件库 GUILayout.Space(5); GUILayout.Label("★、中级零件库", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("1、总的类数:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().IntermediateTypeCount = int.Parse(GUILayout.TextField(SelfTools.Instance().IntermediateTypeCount.ToString())); GUILayout.Space(3); GUILayout.Label("2、总的个数:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().AllIntermediateGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().AllIntermediateGranuleCount.ToString())); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("3、待定颗粒:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().IntermediateUndoneGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().IntermediateUndoneGranuleCount.ToString())); GUILayout.Space(3); GUILayout.Label("4、完成颗粒:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().IntermediateCompletedGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().IntermediateCompletedGranuleCount.ToString())); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); #endregion #region ★、总数据区 GUILayout.Space(5); GUILayout.Label("★、总数据区", SetGuiStyle(Color.red, 14)); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("1、总的类数:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().AllGranuleTypeCount = int.Parse(GUILayout.TextField(SelfTools.Instance().AllGranuleTypeCount.ToString())); GUILayout.Space(3); GUILayout.Label("2、总的个数:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().AllGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().AllGranuleCount.ToString())); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("3、待定颗粒:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().AllUndoneGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().AllUndoneGranuleCount.ToString())); GUILayout.Space(3); GUILayout.Label("4、完成颗粒:", SetGuiStyle(Color.black, 14)); SelfTools.Instance().AllCompletedGranuleCount = int.Parse(GUILayout.TextField(SelfTools.Instance().AllCompletedGranuleCount.ToString())); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); // 第三组水平排版开始 EditorGUILayout.BeginHorizontal(); EditorGUILayout.EndHorizontal(); // 第三组水平排版结束 GUILayout.Space(3); #endregion GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ if (GUILayout.Button("点击获取数据")) { SelfTools.Instance().ShowLibraryData(); } #endregion GUILayout.Space(8); #endregion break; default: throw new ArgumentOutOfRangeException(); } GUILayout.EndScrollView(); }
void OnGUI() { scrowPos = GUILayout.BeginScrollView(scrowPos, GUILayout.Width(position.width), GUILayout.Height(position.height)); EditorGUI.BeginChangeCheck(); // 设置标题语(用途:错行) EditorGUILayout.HelpBox("", MessageType.Info, true); whichOneSelect = GUI.Toolbar(new Rect(5, 5, _topInfoType.Length * 100, 37), whichOneSelect, _topInfoType); switch (whichOneSelect) { case 0: #region 克隆 A 类碰撞盒 #region 一:添加环形类的碰撞盒 SelfCollider.Instance().RingBoxCollGuiControl(); if (EditorGUI.EndChangeCheck() && SelfCollider.Instance().EditorStatus == EditorStatus.编辑) // <-- 控制检查结束在这里 { SelfCollider.Instance().UpdateRingBoxColl(); } SelfCollider.Instance().DrawStatusText(); if (SelfCollider.Instance().EditorStatus == EditorStatus.编辑) { // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); //完成创建碰撞盒 if (GUILayout.Button("确认")) { // 清除工作对撞机参考,结束编辑状态 SelfCollider.Instance().WorkingCollider = null; } //取消 if (GUILayout.Button("取消")) { // //删除工作对撞机,取消其创建 DestroyImmediate(SelfCollider.Instance().WorkingCollider); // 清除工作对撞机参考,结束编辑状态 SelfCollider.Instance().WorkingCollider = null; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 } else { // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (SelfCollider.Instance().EditorStatus != EditorStatus.准备) { GUI.enabled = false; } if (GUILayout.Button("1:点击颗粒预设,开始克隆")) { SelfCollider.Instance().CreateRingBoxColl(); } GUI.enabled = true; if (GUILayout.Button("2:整理、拆分碰撞盒")) { SelfCollider.Instance().DeleteAndArrangeRing(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 } #endregion GUILayout.Space(8); #region 二:自定义倾斜环形碰撞盒 #region 一:旋转 GUILayout.Label("二:自定义操作碰撞盒", TitleStyle()); GUILayout.Space(5); GUILayout.Label(" Tips:该模式需先选中一个已有对象", SetGuiStyle(Color.black, 14)); GUILayout.Space(3); GUILayout.Label(" A:旋转", SetGuiStyle(Color.red, 16)); GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Space(3); GUILayout.Label("1:快捷设置克隆个数(含自身,且会删除所选对象)", SetGuiStyle(Color.black, 14)); GUILayout.Space(5); // 第四组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("4")) { SelfCollider.Instance().CustomBoxCollNum = 4; } if (GUILayout.Button("8")) { SelfCollider.Instance().CustomBoxCollNum = 8; } if (GUILayout.Button("10")) { SelfCollider.Instance().CustomBoxCollNum = 10; } if (GUILayout.Button("12")) { SelfCollider.Instance().CustomBoxCollNum = 12; } if (GUILayout.Button("16")) { SelfCollider.Instance().CustomBoxCollNum = 16; } if (GUILayout.Button("x2")) { SelfCollider.Instance().CustomBoxCollNum = SelfCollider.Instance().CustomBoxCollNum * 2; } EditorGUILayout.EndHorizontal(); // 第四组水平排版结束 GUILayout.Space(5); // 第三组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("2:选中已做好物体,设置克隆个数:", SetGuiStyle(Color.black, 14)); SelfCollider.Instance().CustomBoxCollNum = int.Parse(GUILayout.TextField(SelfCollider.Instance().CustomBoxCollNum.ToString())); EditorGUILayout.EndHorizontal(); // 第三组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ if (GUILayout.Button("开始克隆")) { SelfCollider.Instance().RotateBoxCollider(); } #endregion GUILayout.Space(3); #region 二:平移 GUILayout.Label(" B:平移", SetGuiStyle(Color.red, 16)); // ------------ 二:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); SelfCollider.Instance().SelfPivotAxis = (SelfPivotAxis)EditorGUILayout.EnumPopup("选择克隆方向", SelfCollider.Instance().SelfPivotAxis); EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.Space(3); SelfCollider.Instance().CustomBoxCollNum = EditorGUILayout.IntSlider("设置克隆个数", SelfCollider.Instance().CustomBoxCollNum, 1, 64); GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label(" 设置克隆间隔", SetGuiStyle(Color.black, 11)); SelfCollider.Instance().CloneSpace = float.Parse(EditorGUILayout.TextField(SelfCollider.Instance().CloneSpace.ToString())); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); if (GUILayout.Button("开始克隆")) { SelfCollider.Instance().PanBoxCollider(); } GUILayout.EndVertical(); // ------------ 二:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #endregion GUILayout.Space(8); #endregion break; case 1: #region 克隆 B 类碰撞盒 #region 一:长方体类模型,通过一对角线的两个顶点,确定碰撞盒 GUILayout.Label("一:对角线两顶点确定碰撞盒", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.Label("当前已确定 " + (SelfCollider.Instance().VertexList == null ? 0 : SelfCollider.Instance().VertexList.Count) + " 个顶点", SetGuiStyle(Color.black, 14)); if (GUILayout.Button("获取对角线两顶点,确定碰撞盒")) { SelfCollider.Instance().VertexBox(); } EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #region 二:镜像克隆对象 // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("二:镜像克隆对象", TitleStyle()); if (GUILayout.Button("碰撞盒 Center 转换")) { ToolPro.Instance().CheckBoxCollider(Selection.activeGameObject); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("一:选择轴心 ", SetGuiStyle(Color.red, 14)); GUILayout.Label(SelfTools.Instance().SetMirrorAxis, SetGuiStyle(Color.black, 14)); GUILayout.Label(""); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(2); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("x")) { SelfTools.Instance().SetMirrorAxis = "x"; } if (GUILayout.Button("y")) { SelfTools.Instance().SetMirrorAxis = "y"; } if (GUILayout.Button("z")) { SelfTools.Instance().SetMirrorAxis = "z"; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.Label("二:指定对称中心(默认原点)", SetGuiStyle(Color.red, 14)); if (GUILayout.Button("选中物体设置对称中心")) { SelfTools.Instance().MirrorPoint = Selection.activeGameObject.transform.position; } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); EditorGUILayout.Vector3Field("对称中心", SelfTools.Instance().MirrorPoint); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ GUILayout.Space(3); if (GUILayout.Button("点击按钮,镜像克隆对象")) { SelfTools.Instance().MirrorObj(); } #endregion GUILayout.Space(80); #region :一键添加长方体类型的碰撞盒(如高一粒) GUILayout.Label("三:正方类碰撞盒", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); if (GUILayout.Button("点击克隆碰撞盒")) { SelfCollider.Instance().AddBoxCollider(); } GUILayout.EndVertical(); //------------一:结束垂直画盒子------------ #endregion GUILayout.Space(8); #endregion break; case 2: #region 碰撞盒信息 #region 一:显示模型数据 GUILayout.Space(3); GUILayout.Label("一:显示模型数据", TitleStyle()); GUILayout.Space(3); GUILayout.Label("1:模型基础数据", SetGuiStyle(Color.red, 14)); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // ------------ 第一组水平排版开始 ----------- EditorGUILayout.BeginHorizontal(); GUILayout.TextField("长度:" + SelfCollider.Instance().ModelLength); GUILayout.TextField("宽度:" + SelfCollider.Instance().ModelWidth); GUILayout.TextField("高度:" + SelfCollider.Instance().ModelHeight); EditorGUILayout.EndHorizontal(); // ------------ 第一组水平排版结束 ------------ GUILayout.Space(3); // ------------ 第二组水平排版开始 ------------ EditorGUILayout.BeginHorizontal(); GUILayout.TextField("凹槽 Y 轴坐标:" + SelfCollider.Instance().AoCaoY); GUILayout.TextField("凸起 Y 轴坐标:" + SelfCollider.Instance().TuQiY); EditorGUILayout.EndHorizontal(); // ------------ 第二组水平排版结束 ------------ GUILayout.Space(3); GUILayout.EndVertical(); // ------------一:结束垂直画盒子------------ GUILayout.Label("2:模型最坐标", SetGuiStyle(Color.red, 14)); // ------------ 二:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.TextField("X轴 最小坐标是:" + SelfCollider.Instance().MinX); GUILayout.Space(3); GUILayout.TextField("X轴 最大坐标是:" + SelfCollider.Instance().MaxX); EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.Space(3); // 第二组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.TextField("Y轴 最小坐标是:" + SelfCollider.Instance().MinY); GUILayout.Space(3); GUILayout.TextField("Y轴 最大坐标是:" + SelfCollider.Instance().MaxY); EditorGUILayout.EndHorizontal(); // 第二组水平排版结束 GUILayout.Space(3); // 第三组水平排版开始 EditorGUILayout.BeginHorizontal(); GUILayout.TextField("Z轴 最小坐标是:" + SelfCollider.Instance().MinZ); GUILayout.Space(3); GUILayout.TextField("Z轴 最大坐标是:" + SelfCollider.Instance().MaxZ); EditorGUILayout.EndHorizontal(); // 第三组水平排版结束 GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 二:结束垂直画盒子 ------------ GUILayout.Label("3:碰撞盒总个数", SetGuiStyle(Color.red, 14)); // ------------ 三:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组垂直排版开始 EditorGUILayout.BeginVertical(); GUILayout.TextField("所有碰撞盒个数:" + SelfCollider.Instance().ChildBoxCollNum); EditorGUILayout.EndVertical(); // 第一组垂直排版结束 GUILayout.EndVertical(); // ------------ 三:结束垂直画盒子 ------------ // 第四组水平排版开始 EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("1:点击颗粒名称获取")) { SelfCollider.Instance().ShowModelLengthWidthHeight(); } if (GUILayout.Button("2:清空以上所有数据")) { SelfCollider.Instance().ClearModelData(); } EditorGUILayout.EndHorizontal(); // 第四组水平排版结束 #endregion GUILayout.Space(8); #region 二:隐藏碰撞盒 GUILayout.Label("二:隐藏,移除全部碰撞盒", TitleStyle()); // ------------ 一:开始画盒子 ------------ GUILayout.BeginVertical("box"); // 第一组水平排版开始 EditorGUILayout.BeginHorizontal(); SelfCollider.Instance().HideOrShowTips = !SelfCollider.Instance().IsHideAllBoxColl ? "1:隐藏全部碰撞盒" : "1:显示全部碰撞盒"; if (GUILayout.Button(SelfCollider.Instance().HideOrShowTips)) { SelfCollider.Instance().IsClickHideBtn = true; SelfCollider.Instance().CollBtn(); } if (GUILayout.Button("2:移除所有碰撞盒")) { SelfCollider.Instance().IsClickRemoveBtn = true; SelfCollider.Instance().CollBtn(); } EditorGUILayout.EndHorizontal(); // 第一组水平排版结束 GUILayout.EndVertical(); //------------ 一:结束画盒子 ------------ #endregion GUILayout.Space(8); #region 临时功能 GUILayout.Label("临时功能", TitleStyle()); // ------------ 一:开始垂直画盒子 ------------ GUILayout.BeginVertical("box"); if (GUILayout.Button("选中模型,检测问题")) { SelfModel.Instance().CheckModelQuestion(); } GUILayout.Space(3); GUILayout.EndVertical(); // ------------ 一:结束垂直画盒子 ------------ #endregion GUILayout.Space(8); #endregion break; default: throw new ArgumentOutOfRangeException(); } GUILayout.EndScrollView(); }