static void OnAddImageBtn(EditorControl c) { //[添加小图]按钮压下处理函数 if (!UIAtlasEditorModel.GetInstance().IsProjectExist()) { //工程不存在 //提示创建工程的Message EditorUtility.DisplayDialog("添加失败", "请先创建工程", "确认"); } else {//工程存在 //初始化添加小图对话框信息 OpenFileDialog openfiledialog1 = new OpenFileDialog(); InitializeOpenFileDialog(openfiledialog1); //显示添加小图对话框 if (openfiledialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { for (int fi = 0; fi < openfiledialog1.FileNames.Length; fi++) { //执行添加小图命令 AtlasAddSpriteImageCommand cmd = new AtlasAddSpriteImageCommand(); cmd.m_SpriteName = openfiledialog1.FileNames[fi].ToString(); EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Add SpriteImage"); } } RequestRepaint(); } }
static void DeleteSpriteImage(object command) {//删除小图 if ((m_spriteListView == null) || (m_spriteListView.LastSelectItem < 0)) { return; } List <string> deleteSpriteName = new List <string>(); foreach (var index in m_spriteListView.SelectItems) { ListCtrlItem deleteItem = m_spriteListView.Items[index]; deleteSpriteName.Add(deleteItem.tooltip); } foreach (var item in deleteSpriteName) { AtlasDeleteSpriteImageCommand cmd = new AtlasDeleteSpriteImageCommand(); cmd.m_SpriteName = item; EditorCommandManager.GetInstance().Add(cmd); RegisterUndo("Delete SpriteImage"); } m_bIsOperateSaved = false; RequestRepaint(); }
static void OnClearCurrentProject() {//清空当前工程信息 if ((m_spriteListView == null) || (m_projTreeView == null)) { return; } //清空小图List m_spriteListView.ClearItems(); m_spriteListView.LastSelectItem = -1; //清空工程List m_projTreeView.ClearItems(); //初始化画面显示 ClearCurrentView(); //清空命令 EditorCommandManager.GetInstance().Clear(); //清空命令计数器 m_CommandCounter.CommandCounter = 0; m_CommandCounter.PreCommandCounter = 0; m_bIsOperateSaved = true; RequestRepaint(); }
static void OnUndoRedo() {//Undo/Redo 命令响应函数 int commandCount = 0; if (m_CommandCounter == null) { return; } if (m_CommandCounter.IsRedo(out commandCount)) {//当前操作是Redo for (int i = 0; i < commandCount; i++) { EditorCommandManager.GetInstance().PerformRedo(); } } else {//当前操作是Undo for (int i = 0; i < commandCount; i++) { EditorCommandManager.GetInstance().PerformUndo(); } } //更新前次命令计数器 m_CommandCounter.PreCommandCounter = m_CommandCounter.CommandCounter; }
static void OnMakeAtlasCommand(bool bRet) {//Atlas生成完响应函数 if (bRet) { //提示生成成功 EditorUtility.DisplayDialog("生成成功", "Atlas生成完毕\n\n" + "相关文件保存至\"" + UIAtlasEditorModel.GetInstance().GetAtlasSavePath() + "\"", "确认"); m_bIsOperateSaved = false; } else { if (PROJECT_ERROR_TYPE.PROJECT_ERROR_ATLASOUTPU_PATH == UIAtlasEditorModel.GetInstance().GetProjectFailedType()) {//未指定Atlas输出路径 //显示选择路径对话框 string savePath = EditorUtility.SaveFolderPanel("请选择Atlas文件的输出路径", "Assets/", ""); if (savePath.Contains("/Assets")) {//路径合法(Unity相对路径) //获取Unity相对路径 savePath = savePath.Substring(UnityEngine.Application.dataPath.Length - "Assets".Length); //设定Atlas输出路径 UIAtlasEditorModel.GetInstance().SetAtlasSavePath(savePath + "/"); //执行“生成Atlas”命令 AtlasMakeAtlas cmd = new AtlasMakeAtlas(); EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Make Atlas"); } else { //提示输出路径错误message EditorUtility.DisplayDialog("生成失败", "请选择Assets/下的路径", "确认"); } } else if (PROJECT_ERROR_TYPE.PROJECT_ERROR_NONE_IMAGE == UIAtlasEditorModel.GetInstance().GetProjectFailedType()) {//未添加小图 //提示添加小图message EditorUtility.DisplayDialog("生成失败", "请添加小图资源", "确认"); } else { //do nothing } } RequestRepaint(); }
static void OnMakeAtlasBtn(EditorControl c) { //[生成Atlas]按钮压下处理函数 if (!UIAtlasEditorModel.GetInstance().IsProjectExist()) { //工程未创建 //提示创建工程message EditorUtility.DisplayDialog("生成失败", "请先创建工程", "确认"); } else {//工程已存在 AtlasMakeAtlas cmd = new AtlasMakeAtlas(); EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Make Atlas"); } RequestRepaint(); }
static void OnDisable(EditorRoot root) {//窗口无效回调函数 if (UIAtlasEditorModel.GetInstance().IsProjectExist()) { if (!m_bIsOperateSaved) { if (EditorUtility.DisplayDialog("保存工程", "是否保存当前工程", "保存", "取消")) { OnSaveProjBtn(null); } } } UIAtlasTempTextureManager.DestroyInstance(); UIAtlasEditorModel.GetInstance().DestoryInstance(); EditorCommandManager.GetInstance().Clear(); Undo.undoRedoPerformed -= OnUndoRedo; GameObject.DestroyImmediate(m_Counter); GameObject.DestroyImmediate(m_previewObj); }
static void OnSpriteInspector(EditorControl c, object target) {//小图属性窗口显示 int w, h; string oldStr = null; string SpriteName = null; if ((m_spriteListView == null) || (m_spriteListView.LastSelectItem < 0)) { return; } ListCtrlItem deleteItem = m_spriteListView.Items[m_spriteListView.LastSelectItem]; SpriteName = deleteItem.tooltip; GUILayout.Space(20f); GUILayout.BeginHorizontal(); GUILayout.Label("宽高比", GUILayout.Width(60f)); GUILayout.TextField(m_aspecet.ToString(), GUILayout.Width(150)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("宽度", GUILayout.Width(60f)); GUI.SetNextControlName("宽度"); oldStr = m_spriteWidthStr; m_spriteWidthStr = GUILayout.TextField(m_spriteWidthStr, GUILayout.Width(150)); if ((GUI.GetNameOfFocusedControl() == "宽度") && (oldStr != m_spriteWidthStr)) { int.TryParse(m_spriteWidthStr, out w); h = (int)(w / m_aspecet); m_spriteHeightStr = h.ToString(); } GUILayout.Label("pix", GUILayout.Width(50f)); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("高度", GUILayout.Width(60f)); GUI.SetNextControlName("高度"); oldStr = m_spriteHeightStr; m_spriteHeightStr = GUILayout.TextField(m_spriteHeightStr, GUILayout.Width(150)); if ((GUI.GetNameOfFocusedControl() == "高度") && (oldStr != m_spriteHeightStr)) { int.TryParse(m_spriteHeightStr, out h); w = (int)(h * m_aspecet); m_spriteWidthStr = w.ToString(); } GUILayout.Label("pix", GUILayout.Width(50f)); GUILayout.EndHorizontal(); if (Event.current.keyCode == KeyCode.Return && Event.current.type == EventType.Used) { if (GUI.GetNameOfFocusedControl() == "高度" || GUI.GetNameOfFocusedControl() == "宽度") { AtlasSpriteImage spriteImage = null; AtlasImageZoomCommand cmd = null; Texture2D tex = null; int.TryParse(m_spriteWidthStr, out w); int.TryParse(m_spriteHeightStr, out h); cmd = new AtlasImageZoomCommand(); UIAtlasEditorModel.GetInstance().GetSpriteImage(SpriteName, out spriteImage); tex = UIAtlasEditorModel.GetInstance().GetSpriteTexture(SpriteName); if (tex == null) { return; } cmd.m_oldScaleFactor = spriteImage.ZoomScale; cmd.m_newScaleFactor = (float)w / (float)tex.width; cmd.m_SpriteName = SpriteName; EditorCommandManager.GetInstance().Add(cmd); m_bIsOperateSaved = false; RegisterUndo("Zoom Image"); } } //RequestRepaint(); }