LiuQilin 8 years ago
parent
commit
40135e98d5

BIN
.vs/MyLovelyGarden/v14/.suo


BIN
Assets/Resources/Garden.unity


+ 28 - 15
Assets/Script/Editor/EditorSpriteAsste.cs

@@ -10,13 +10,12 @@ public class EditorSpriteAsste : Editor
 	#region 变量
 
     private Vector2 ScrollPos;
-    private SpriteAsset Script;
 
     #endregion
 
 	private void OnEnable()
 	{
-	    Script = (SpriteAsset) target;
+	    
 	}
 
     public override void OnInspectorGUI()
@@ -30,20 +29,23 @@ public class EditorSpriteAsste : Editor
 
         ScrollPos = GUILayout.BeginScrollView(ScrollPos, false, false);
 
-        if (Script.SpriteInfoList != null)
+        if (SpriteAsset.SpriteInfoList != null)
         {
-            for (int i = 0; i < Script.SpriteInfoList.Count; i++)
+            for (int i = 0; i < SpriteAsset.SpriteInfoList.Count; i++)
             {
-                SpriteInfo spriteInfo = Script.SpriteInfoList[i];
+                SpriteInfo spriteInfo = SpriteAsset.SpriteInfoList[i];
 
                 EditorGUILayout.ObjectField("", spriteInfo.Sprite, typeof(Sprite), false);
 
                 GUILayout.BeginVertical();
 
-                EditorGUILayout.LabelField("ID : " + spriteInfo.ID);
                 EditorGUILayout.LabelField("Name : " + spriteInfo.Name);
-                EditorGUILayout.LabelField("Rect : " + spriteInfo.Rect);
-                EditorGUILayout.LabelField("Pivot : " + spriteInfo.Pivot);
+
+                EditorGUILayout.LabelField("LowerLeft : " + spriteInfo.UvList[0]);
+                EditorGUILayout.LabelField("UpperLeft : " + spriteInfo.UvList[1]);
+                EditorGUILayout.LabelField("UpperRight : " + spriteInfo.UvList[2]);
+                EditorGUILayout.LabelField("LowerRight : " + spriteInfo.UvList[3]);
+
                 EditorGUILayout.LabelField("");
 
                 GUILayout.EndVertical();
@@ -56,9 +58,9 @@ public class EditorSpriteAsste : Editor
 
     private void GetSpriteInfo()
     {
-        Script.SpriteInfoList = new List<SpriteInfo>();
+        SpriteAsset.SpriteInfoList = new List<SpriteInfo>();
 
-        string path = AssetDatabase.GetAssetPath(Script.Texture);
+        string path = AssetDatabase.GetAssetPath(SpriteAsset.Texture);
 
         Object[] objects = AssetDatabase.LoadAllAssetsAtPath(path);
 
@@ -68,14 +70,25 @@ public class EditorSpriteAsste : Editor
             {
                 Sprite sprite = (Sprite) objects[i];
                 SpriteInfo spriteInfo = new SpriteInfo();
-
-                spriteInfo.ID = i;
-                spriteInfo.Rect = sprite.rect;
-                spriteInfo.Pivot = sprite.pivot;
+                
                 spriteInfo.Sprite = sprite;
                 spriteInfo.Name = sprite.name;
 
-                Script.SpriteInfoList.Add(spriteInfo);
+                float width = SpriteAsset.Texture.width;
+                float height = SpriteAsset.Texture.height;
+
+                Vector2 llUv = new Vector2(sprite.rect.xMin/width, sprite.rect.yMin/height);
+                Vector2 ulUv = new Vector2(sprite.rect.xMin/width, sprite.rect.yMax/height);
+                Vector2 urUv = new Vector2(sprite.rect.xMax/width, sprite.rect.yMax/height);
+                Vector2 lrUv = new Vector2(sprite.rect.xMax/width, sprite.rect.yMin/height);
+                
+                spriteInfo.UvList = new List<Vector2>();
+                spriteInfo.UvList.Add(llUv);
+                spriteInfo.UvList.Add(ulUv);
+                spriteInfo.UvList.Add(urUv);
+                spriteInfo.UvList.Add(lrUv);
+
+                SpriteAsset.SpriteInfoList.Add(spriteInfo);
             }
         }
     }

+ 25 - 5
Assets/Script/Tool/SpriteAsset.cs

@@ -5,21 +5,41 @@ using System;
 using System.Collections;
 using System.Collections.Generic;
 
+[Serializable]
 public class SpriteInfo
 {
     #region 变量
 
-    public int ID;
     public string Name;
-    public Rect Rect;
     public Sprite Sprite;
-    public Vector2 Pivot;
+    public List<Vector2> UvList;
 
     #endregion
 }
 
 public class SpriteAsset : MonoBehaviour
 {
-    public Texture2D Texture;
-    public List<SpriteInfo> SpriteInfoList;
+    public static Texture2D Texture;
+    public static List<SpriteInfo> SpriteInfoList;
+
+    public static Dictionary<string, SpriteInfo> _SpriteInfoDic;
+
+    public static Dictionary<string, SpriteInfo> SpriteInfoDic
+    {
+        get
+        {
+            if (_SpriteInfoDic == null)
+            {
+                SpriteInfoDic = new Dictionary<string, SpriteInfo>();
+
+                for (int i = 0; i < SpriteInfoList.Count; i++)
+                {
+                    SpriteInfoDic.Add(SpriteInfoList[i].Name, SpriteInfoList[i]);
+                }
+            }
+
+            return _SpriteInfoDic;
+        }
+        set { _SpriteInfoDic = value; }
+    }
 }

+ 33 - 0
Assets/Script/Tool/UI/ImagePlus.cs

@@ -0,0 +1,33 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+using System.Collections;
+using System.Collections.Generic;
+
+public class ImagePlus : Image
+{
+	#region 变量
+
+    public int StartIndex;
+    public string SpriteName;
+    public List<UIVertex> TextVertexList;
+
+    #endregion
+
+    protected override void OnPopulateMesh(VertexHelper toFill)
+    {
+        toFill.Clear();
+
+        UIVertex[] vertices = new UIVertex[4];
+
+        vertices[0].position = TextVertexList[StartIndex*6 + 3].position;
+        vertices[1].position = TextVertexList[StartIndex*6 + 3].position;
+        vertices[2].position = TextVertexList[StartIndex*6 + 3].position;
+        vertices[3].position = TextVertexList[StartIndex*6 + 3].position;
+
+        vertices[0].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[0];
+        vertices[1].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[1];
+        vertices[2].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[2];
+        vertices[3].uv0 = SpriteAsset.SpriteInfoDic[SpriteName].UvList[3];
+    }
+}

+ 12 - 0
Assets/Script/Tool/UI/ImagePlus.cs.meta

@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3f7e6e302f395b744be6ac65d53a2240
+timeCreated: 1490169227
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 52 - 10
Assets/Script/Tool/UI/TextPlus.cs

@@ -4,19 +4,61 @@ using UnityEngine.UI;
 using System.Collections;
 using System.Collections.Generic;
 
-public class TextPlus : Image
+public class TextPlus : Text
 {
-    protected override void OnPopulateMesh(VertexHelper toFill)
+    #region
+
+    public bool Draw;
+
+    private ImagePlus _ImagePlus;
+
+    public ImagePlus ImagePlus
+    {
+        get
+        {
+            if (_ImagePlus == null)
+            {
+                _ImagePlus = GetComponentInChildren<ImagePlus>();
+            }
+
+            return _ImagePlus;
+        }
+        set { _ImagePlus = value; }
+    }
+
+    #endregion
+
+    public override void SetVerticesDirty()
     {
-        //base.OnPopulateMesh(toFill);
+        base.SetVerticesDirty();
+
+        int leftIndex = text.IndexOf("<(");
+        int rightIndex = text.IndexOf(")>");
+
+        if (leftIndex == -1)
+        {
+            Draw = false;
+        }
+        else
+        {
+            Draw = true;
+
+            ImagePlus.SpriteName = text.Between(leftIndex + 2, rightIndex - 2);
+            ImagePlus.StartIndex = leftIndex - 1;
 
-        toFill.Clear();
-        toFill.AddVert(new Vector3(0, 0, 0), Color.white, new Vector2(0.5f, 0));
-        toFill.AddVert(new Vector3(0, 100, 0), Color.white, new Vector2(0.5f, 1));
-        toFill.AddVert(new Vector3(100, 100, 0), Color.white, new Vector2(1, 1));
-        toFill.AddVert(new Vector3(100, 0, 0), Color.white, new Vector2(1, 0));
+            text = text.Replace(leftIndex, rightIndex, "  ");
+        }
+    }
+
+    protected override void OnPopulateMesh(VertexHelper toFill)
+    {
+        base.OnPopulateMesh(toFill);
+        
+        if (Draw)
+        {
+            Draw = false;
 
-        toFill.AddTriangle(0,1,2);
-        toFill.AddTriangle(0,2,3);
+            toFill.GetUIVertexStream(ImagePlus.TextVertexList);
+        }
     }
 }

+ 1 - 1
MyLovelyGarden.txt

@@ -2,7 +2,7 @@
 
 RegistValue开分支
 
-图文混排
+图文混排(图文混排的优化)
 
 语言工具(Prefab到Excel,Excel转XML,读XML)