using UnityEditor; using UnityEngine; using UnityEngine.UI; using System.IO; using System.Linq; using System.Collections; using System.Collections.Generic; using LitJson; [CustomEditor(typeof(Auxiliary))] public class EditorAuxiliary : Editor { #region 变量 private Auxiliary Script; #endregion private void OnEnable() { Script = (Auxiliary) target; } public override void OnInspectorGUI() { base.OnInspectorGUI(); if (GUILayout.Button("Temp")) { } if (GUILayout.Button("PrintBounds")) { PrintBounds(); } if (GUILayout.Button("PrintPosition")) { PrintPosition(); } if (GUILayout.Button("PrintPositionLocal")) { PrintPositionLocal(); } if (GUILayout.Button("ChangeFont")) { ChangeFont(); } if (GUILayout.Button("ChangePivot")) { ChangePivot(); } if (GUILayout.Button("AddSuffix")) { AddSuffix(); } if (GUILayout.Button("AddPrefix")) { AddPrefix(); } if (GUILayout.Button("ChangePrefix")) { ChangePrefix(); } if (GUILayout.Button("ReplaceFromTo")) { ReplaceFromTo(); } if (GUILayout.Button("CopyCurve")) { //复制动画 //EditorCurveBinding[] bindings = AnimationUtility.GetCurveBindings(Script.ClipOrigin); //for (int i = 0; i < bindings.Length; i++) //{ // Debug.Log(string.Format("path : {0} type : {1} name : {2}", bindings[i].path, bindings[i].type, bindings[i].propertyName)); //} //EditorCurveBinding bindingOrigin = new EditorCurveBinding(); //bindingOrigin.type = typeof(SpriteRenderer); //bindingOrigin.path = "Flash"; //bindingOrigin.propertyName = "m_Color.a"; //AnimationCurve curveOrigin = AnimationUtility.GetEditorCurve(Script.ClipOrigin, bindingOrigin); //EditorCurveBinding bindingNew = new EditorCurveBinding(); //bindingNew.type = typeof(Image); //bindingNew.path = "UIFlash"; //bindingNew.propertyName = "m_Color.a"; //AnimationCurve curveNew = AnimationUtility.GetEditorCurve(Script.ClipNew, bindingNew); //curveNew.keys = curveOrigin.keys; //AnimationUtility.SetEditorCurve(Script.ClipNew, bindingNew, curveNew); //EditorUtility.SetDirty(Script.ClipNew); } if (GUILayout.Button("InstaciateAll")) { for (int i = 0; i < Script.Sprites.Count; i++) { GameObject go = new GameObject(); go.transform.parent = Script.Go.transform; go.AddComponent().sprite = Script.Sprites[i]; } } if (GUILayout.Button("SliceByDragonboneData")) { SliceByDragonboneData(); } if (GUILayout.Button("ClearPackingTag")) { List searchExtension = new List() { ".png", }; List pathList = Directory.GetFiles(Application.dataPath, "*.*", SearchOption.AllDirectories).Where ( path => { string extension = Path.GetExtension(path); if (searchExtension.Contains(extension)) { return true; } else { return false; } } ) .ToList(); for (int i = 0; i < pathList.Count; i++) { string path = "Assets" + pathList[i].Replace(Application.dataPath, ""); TextureImporter textureImporter = AssetImporter.GetAtPath(path) as TextureImporter; if (textureImporter == null) { continue; } textureImporter.spritePackingTag = ""; textureImporter.SaveAndReimport(); } } } private void SliceByDragonboneData() { string assetPath = AssetDatabase.GetAssetPath(Script.Texture); TextureImporter textureImporter = (TextureImporter) AssetImporter.GetAtPath(assetPath); JsonData jsonData = JsonMapper.ToObject(Script.TextAsset.text); jsonData = jsonData["SubTexture"]; ListspriteMetaDataList = new List(); for (int i = 0; i < jsonData.Count; i++) { SpriteMetaData spriteMetaData = new SpriteMetaData(); int x = int.Parse(jsonData[i].Inst_Object["x"].ToJson().Trim('"')); int y = int.Parse(jsonData[i].Inst_Object["y"].ToJson().Trim('"')); int width = int.Parse(jsonData[i].Inst_Object["width"].ToJson().Trim('"')); int height = int.Parse(jsonData[i].Inst_Object["height"].ToJson().Trim('"')); string spriteName = jsonData[i].Inst_Object["name"].ToJson().Trim('"'); spriteMetaData.rect = new Rect(x, Script.Texture.width - y - height, width, height); spriteMetaData.name = spriteName; spriteMetaDataList.Add(spriteMetaData); } textureImporter.spritesheet = spriteMetaDataList.ToArray(); textureImporter.textureType = TextureImporterType.Sprite; textureImporter.spriteImportMode = SpriteImportMode.Multiple; textureImporter.SaveAndReimport(); } private void PrintBounds() { Bounds bounds = Script.Go.GetComponent().bounds; Debug.Log(string.Format("x : {0:0.00} y : {1:0.00} z : {2:0.00}", bounds.extents.x, bounds.extents.y, bounds.extents.z)); } private void PrintPosition() { Debug.Log(Script.Go.transform.position); } private void PrintPositionLocal() { Debug.Log(Script.Go.transform.localPosition); } private void ChangeFont() { for (int j = 0; j < Script.GoList.Count; j++) { Transform[] transforms = Script.GoList[j].GetComponentsInChildren(true); for (int i = 0; i < transforms.Length; i++) { Text text = transforms[i].GetComponent(); TextMesh textMesh = transforms[i].GetComponent(); if (text != null) { text.font = Script.Font; text.fontStyle = FontStyle.Normal; } if (textMesh != null) { textMesh.font = Script.Font; textMesh.fontStyle = FontStyle.Normal; } } } } private void ChangePivot() { for (int i = 0; i < Script.SrList.Count; i++) { string path = AssetDatabase.GetAssetPath(Script.SrList[i].sprite); TextureImporter textureImporter = (TextureImporter)AssetImporter.GetAtPath(path); float offsetX = -Script.SrList[i].transform.position.x * 100 / Script.SrList[i].sprite.texture.width; float offsetY = -Script.SrList[i].transform.position.y * 100 / Script.SrList[i].sprite.texture.height; textureImporter.spritePivot = new Vector2(textureImporter.spritePivot.x + offsetX, textureImporter.spritePivot.y + offsetY); AssetDatabase.ImportAsset(path); } } private void AddSuffix() { Transform[] transforms = Script.Go.GetComponentsInChildren(true); for (int i = 0; i < transforms.Length; i++) { transforms[i].name = transforms[i].name + Script.String1; } } private void AddPrefix() { Transform[] transforms = Script.Go.GetComponentsInChildren(true); for (int i = 0; i < transforms.Length; i++) { transforms[i].name = Script.String1 + transforms[i].name; } } private void ChangePrefix() { Transform[] transforms = Script.Go.GetComponentsInChildren(true); for (int i = 0; i < transforms.Length; i++) { int index = transforms[i].name.IndexOf('_'); transforms[i].name = Script.String1 + transforms[i].name.Remove(0, index + 1); } } private void ReplaceFromTo() { Transform[] transforms = Script.Go.GetComponentsInChildren(true); for (int i = 0; i < transforms.Length; i++) { transforms[i].name = transforms[i].name.Replace(Script.String1, Script.String2); } } }