From 74aa81a4ba3687884cefd9ed2d3db4305296f03c Mon Sep 17 00:00:00 2001 From: Soviby <936858871@qq.com> Date: Mon, 2 Dec 2024 00:33:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B9=9D=E5=AE=AB=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JSZXPsd2Unity/PSD导出Unity.js | 9 +-- .PhotoshopScript/JSZXPsd2Unity/step2.exe | Bin 18950576 -> 18950900 bytes .psd2uguiExamples/Sample.psd | Bin 9344956 -> 9345036 bytes Assets/Editor/Entity/IEntity.cs | 15 +++-- Assets/Editor/Entity/ImageEntity.cs | 51 ++++++++------- Assets/Editor/Entity/TextEntity.cs | 2 +- Assets/Editor/Entity/TextMeshProEntity.cs | 2 +- Assets/Editor/Helper/LayoutParser.cs | 4 +- Assets/Editor/Manager/EntityManager.cs | 61 +++--------------- .../Editor/ScriptObject/CacheScriptObject.cs | 8 +++ 10 files changed, 63 insertions(+), 89 deletions(-) diff --git a/.PhotoshopScript/JSZXPsd2Unity/PSD导出Unity.js b/.PhotoshopScript/JSZXPsd2Unity/PSD导出Unity.js index d30ee35..0114b5a 100644 --- a/.PhotoshopScript/JSZXPsd2Unity/PSD导出Unity.js +++ b/.PhotoshopScript/JSZXPsd2Unity/PSD导出Unity.js @@ -109,19 +109,20 @@ function s2t(t) { return stringIDToTypeID(t) } this.documentName = app.activeDocument.name.slice(0, -4); - // 导出整个psd作为png参考图 var i, j, k, len, ref1, removeFiles; var baseFolder = Folder(this.saveFolder + "/" + this.documentName); if (baseFolder.exists) { removeFiles = baseFolder.getFiles(); for (i = j = 0, ref1 = removeFiles.length; 0 <= ref1 ? j < ref1 : j > ref1; i = 0 <= ref1 ? ++j : --j) { - if (removeFiles[i].name.startsWith(this.documentName) && removeFiles[i].name.endsWith('.png')) { - removeFiles[i].remove(); - } + removeFiles[i].remove(); + // if (removeFiles[i].name.startsWith(this.documentName) && removeFiles[i].name.endsWith('.png')) { + // removeFiles[i].remove(); + // } } baseFolder.remove(); } baseFolder.create(); + // 导出整个psd作为png参考图 saveFile = new File(baseFolder.fsName + "/" + "__background__.png"); options = new ExportOptionsSaveForWeb(); options.format = SaveDocumentType.PNG; diff --git a/.PhotoshopScript/JSZXPsd2Unity/step2.exe b/.PhotoshopScript/JSZXPsd2Unity/step2.exe index eac7dde3a04cc2de2baa63b9536eea7384d1bce3..d62165e4aa26ac514c3aa76b890d84b2096b7a7e 100644 GIT binary patch delta 4249 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 K4d^KRVE;cDC0tYh delta 4301 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 N2XYlY?Rm=P{{W=EXXXF^ diff --git a/Assets/Editor/Entity/IEntity.cs b/Assets/Editor/Entity/IEntity.cs index deeedd3..ea73dcc 100644 --- a/Assets/Editor/Entity/IEntity.cs +++ b/Assets/Editor/Entity/IEntity.cs @@ -11,6 +11,9 @@ namespace UguiToolkit.Editor void ApplyTransform(Transform tf); bool IsInside(Transform tf); void ApplyData(T ui) where T: MonoBehaviour; + void InitPreview(); + void ShowSelectionImg(bool show); + GameObject gameObject { get; } } public abstract class BaseEntity : MonoBehaviour, IEntity where T1 : MonoBehaviour where T2 : LayoutInfo.ElementInfo @@ -20,10 +23,6 @@ namespace UguiToolkit.Editor private UnityEngine.UI.Image m_selectionImg; public T2 ElementInfo => m_elementInfo; - - public abstract void ApplyTransform(Transform tf); - protected abstract void OnApplyData(T1 ui); - public void ShowSelectionImg(bool show) { if (m_selectionImg) @@ -32,6 +31,12 @@ namespace UguiToolkit.Editor } } + + public abstract void ApplyTransform(Transform tf); + public abstract void InitPreview(); + protected abstract void OnApplyData(T1 ui); + + public bool IsInside(Transform tf) { var rect = ElementInfo.Rect; @@ -65,7 +70,7 @@ namespace UguiToolkit.Editor rtf.sizeDelta = new Vector2(m_elementInfo.w, m_elementInfo.h); m_selectionImg = go.AddComponent(); - m_selectionImg.color = new Color(0, 1, 0, 0.2f); + m_selectionImg.color = new Color(0, 1, 0, 0.15f); } } } diff --git a/Assets/Editor/Entity/ImageEntity.cs b/Assets/Editor/Entity/ImageEntity.cs index f9b869b..c9d8666 100644 --- a/Assets/Editor/Entity/ImageEntity.cs +++ b/Assets/Editor/Entity/ImageEntity.cs @@ -21,25 +21,17 @@ namespace UguiToolkit.Editor private Image m_previewImage; - protected override void OnApplyData(Image ui) + // ʱ + public void SetTransform(float rotiation, float2 scale, bool similarityCalc) { - ApplyTransform(ui.transform); + this.rotiation = rotiation; + this.scale = scale; + this.similarityCalc = similarityCalc; + + this.needFillTransform = true; } - public void InitPreviewImage() - { - if (ElementInfo == null) return; - - if (!TryGetComponent(out m_previewImage)) - { - m_previewImage = gameObject.AddComponent(); - } - - LoadImageFromFile(ElementInfo.imgPath); - ApplyTransform(transform); - } - - void LoadImageFromFile(string path) + private void LoadImageFromFile(string path) { if (System.IO.File.Exists(path)) { @@ -58,18 +50,29 @@ namespace UguiToolkit.Editor } } - // ʱ - public void SetTransform(float rotiation, float2 scale, bool similarityCalc) + protected override void OnApplyData(Image ui) { - this.rotiation = rotiation; - this.scale = scale; - this.similarityCalc = similarityCalc; + ApplyTransform(ui.transform); - this.needFillTransform = true; + if (ElementInfo.HaveSlice) + { + ui.type = Image.Type.Sliced; + } + } + + public override void InitPreview() + { + if (ElementInfo == null) return; + + if (!TryGetComponent(out m_previewImage)) + { + m_previewImage = gameObject.AddComponent(); + } + + LoadImageFromFile(ElementInfo.imgPath); + ApplyTransform(transform); } - // ʱ - public void ClearFillTransform() => this.needFillTransform = false; public override void ApplyTransform(Transform tf) { diff --git a/Assets/Editor/Entity/TextEntity.cs b/Assets/Editor/Entity/TextEntity.cs index 38981d2..97d3a23 100644 --- a/Assets/Editor/Entity/TextEntity.cs +++ b/Assets/Editor/Entity/TextEntity.cs @@ -23,7 +23,7 @@ namespace UguiToolkit.Editor rectTransform.sizeDelta = new Vector2(ElementInfo.w + 10, ElementInfo.h + 10); } - public void InitPreviewText() + public override void InitPreview() { if (ElementInfo == null) return; diff --git a/Assets/Editor/Entity/TextMeshProEntity.cs b/Assets/Editor/Entity/TextMeshProEntity.cs index 1d7a178..42f233d 100644 --- a/Assets/Editor/Entity/TextMeshProEntity.cs +++ b/Assets/Editor/Entity/TextMeshProEntity.cs @@ -30,7 +30,7 @@ namespace UguiToolkit.Editor rectTransform.sizeDelta = new Vector2(ElementInfo.w + 10, ElementInfo.h + 10); } - public void InitPreviewText() + public override void InitPreview() { if (ElementInfo == null) return; diff --git a/Assets/Editor/Helper/LayoutParser.cs b/Assets/Editor/Helper/LayoutParser.cs index c086f2b..f46b0a9 100644 --- a/Assets/Editor/Helper/LayoutParser.cs +++ b/Assets/Editor/Helper/LayoutParser.cs @@ -31,7 +31,8 @@ namespace UguiToolkit.Editor y = layoutElementJsonData.y, w = layoutElementJsonData.w, h = layoutElementJsonData.h, - layoutInfo = layoutInfo + layoutInfo = layoutInfo, + imgSlicePath = layoutElementJsonData.slice ? layoutElementJsonData.imageName + "-slice" : null }); } else if (layoutElementJsonData.type == "Text") @@ -104,6 +105,7 @@ namespace UguiToolkit.Editor // ͼƬ public string imageName; + public bool slice; // ǷΪŹ // ı public string text; diff --git a/Assets/Editor/Manager/EntityManager.cs b/Assets/Editor/Manager/EntityManager.cs index 27f1764..f70254d 100644 --- a/Assets/Editor/Manager/EntityManager.cs +++ b/Assets/Editor/Manager/EntityManager.cs @@ -5,7 +5,6 @@ using System.IO; using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; -using static UguiToolkit.Editor.LayoutInfo; namespace UguiToolkit.Editor { @@ -19,8 +18,7 @@ namespace UguiToolkit.Editor private GameObject m_curSelectionGo; private List m_imageEntities; - private List m_textEntities; - private List m_tmpEntities; + private List m_textEntities; private List m_selectionEntities; [LabelText("脱离选择控制"), ShowInInspector] @@ -189,7 +187,7 @@ namespace UguiToolkit.Editor foreach (var rotScale in rotScaleInfoItems) { var imgInfo = imgEntity.ElementInfo; - if (imgInfo.imgPath == rotScale.imgPath) + if ( (imgInfo.HaveSlice && imgInfo.imgSlicePath == rotScale.imgPath) || imgInfo.imgPath == rotScale.imgPath) { if (rotScale.similarityCalc) { @@ -226,10 +224,6 @@ namespace UguiToolkit.Editor { textEntity.gameObject.SetActive(false); } - foreach (var textEntity in m_tmpEntities) - { - textEntity.gameObject.SetActive(false); - } } else if (activeGameObject.TryGetComponent(out var text)) { @@ -261,45 +255,6 @@ namespace UguiToolkit.Editor { imgEntity.gameObject.SetActive(false); } - foreach (var textEntity in m_tmpEntities) - { - textEntity.gameObject.SetActive(false); - } - } - else if (activeGameObject.TryGetComponent(out var tmp)) - { - bool IsInside = false; - m_entityRoot.gameObject.SetActive(true); - foreach (var tmpEntity in m_tmpEntities) - { - tmpEntity.ShowSelectionImg(true); - tmpEntity.gameObject.SetActive(true); - - m_selectionEntities.Add(tmpEntity); - - if (!IsInside && tmpEntity.IsInside(activeGameObject.transform)) IsInside = true; - } - - if (IsInside) - { - if (m_lastSelectionGo && m_lastSelectionGo == activeGameObject) - { - m_curSelectionGo = activeGameObject; - } - } - else - { - m_curSelectionGo = activeGameObject; - } - - foreach (var imgEntity in m_imageEntities) - { - imgEntity.gameObject.SetActive(false); - } - foreach (var textEntity in m_textEntities) - { - textEntity.gameObject.SetActive(false); - } } } } @@ -318,7 +273,6 @@ namespace UguiToolkit.Editor UpdateHierarchyOfEntity(show, m_entityRoot.gameObject); foreach (var entity in m_imageEntities) UpdateHierarchyOfEntity(show, entity.gameObject); foreach (var entity in m_textEntities) UpdateHierarchyOfEntity(show, entity.gameObject); - foreach (var entity in m_tmpEntities) UpdateHierarchyOfEntity(show, entity.gameObject); } private void UpdateHierarchyOfEntity(in bool show, in GameObject entity) @@ -339,7 +293,6 @@ namespace UguiToolkit.Editor m_imageEntities = new(m_panelCache.layoutInfo.Count); m_textEntities = new(m_panelCache.layoutInfo.Count); - m_tmpEntities = new(m_panelCache.layoutInfo.Count); m_selectionEntities = new(m_panelCache.layoutInfo.Count); foreach (var elementInfo in m_panelCache.GetLayoutElementInfos()) @@ -353,10 +306,12 @@ namespace UguiToolkit.Editor entity.transform.SetSiblingIndex(0); entity.SetData(imgInfo); - entity.InitPreviewImage(); + entity.InitPreview(); m_imageEntities.Add(entity); UpdateHierarchyOfEntity(false, entity.gameObject); + + // 创建九宫格 continue; } var textInfo = elementInfo as LayoutInfo.TextInfo; @@ -370,9 +325,9 @@ namespace UguiToolkit.Editor entity.transform.SetSiblingIndex(0); entity.SetData(textInfo); - entity.InitPreviewText(); + entity.InitPreview(); - m_tmpEntities.Add(entity); + m_textEntities.Add(entity); UpdateHierarchyOfEntity(false, entity.gameObject); continue; } @@ -384,7 +339,7 @@ namespace UguiToolkit.Editor entity.transform.SetSiblingIndex(0); entity.SetData(textInfo); - entity.InitPreviewText(); + entity.InitPreview(); m_textEntities.Add(entity); UpdateHierarchyOfEntity(false, entity.gameObject); diff --git a/Assets/Editor/ScriptObject/CacheScriptObject.cs b/Assets/Editor/ScriptObject/CacheScriptObject.cs index 60b3527..de33464 100644 --- a/Assets/Editor/ScriptObject/CacheScriptObject.cs +++ b/Assets/Editor/ScriptObject/CacheScriptObject.cs @@ -39,6 +39,12 @@ namespace UguiToolkit.Editor { imgInfo.imgPath = System.IO.Path.Join(targetImgDirPath, imgInfo.imgPath) + ".png"; imgInfo.imgPath = Path.GetRelativePath(projectPath, imgInfo.imgPath).Replace("\\", "/"); + + if (imgInfo.HaveSlice) + { + imgInfo.imgSlicePath = System.IO.Path.Join(targetImgDirPath, imgInfo.imgSlicePath) + ".png"; + imgInfo.imgSlicePath = Path.GetRelativePath(projectPath, imgInfo.imgSlicePath).Replace("\\", "/"); + } } } @@ -210,6 +216,8 @@ namespace UguiToolkit.Editor public class ImageInfo : ElementInfo { public string imgPath; + public string imgSlicePath; // 九宫格图片路径 + public bool HaveSlice => imgSlicePath != null; // 是否有九宫格 } [Serializable]