public void OnEnable() { upkAniVo = (UpkAniVO)target; _totalFrame = upkAniVo.keys.Count; _currentFrame = 0; _frameTime = 0; }
private void doSingle(string selectedPath, bool updateIt = true) { DirectoryInfo directoryInfo = new DirectoryInfo(selectedPath); string directoryName = directoryInfo.Name; string[] files = Directory.GetFiles(selectedPath); if (files.Length < 1) { return; } byte[] bytes; List <string> nameList = new List <string>(); List <Texture2D> texture2DList = new List <Texture2D>(); foreach (string file in files) { bytes = FileHelper.GetBytes(file); Texture2D texture2D = new Texture2D(1, 1); string fileName = Path.GetFileNameWithoutExtension(file); texture2D.name = fileName; texture2D.LoadImage(bytes); texture2DList.Add(texture2D); nameList.Add(fileName); } Texture2D[] textures = texture2DList.ToArray(); Texture2D temp = new Texture2D(1, 1, TextureFormat.ARGB32, false); Rect[] rect = null; try { rect = temp.PackTextures(textures, 1, 2048); } catch (Exception ex) { Debug.Log(ex); return; } List <SpriteMetaData> spriteMetaDatas = new List <SpriteMetaData>(); int len = texture2DList.Count; for (int i = 0; i < len; i++) { Rect r = rect[i]; r.x *= temp.width; r.y *= temp.height; r.width *= temp.width; r.height *= temp.height; SpriteMetaData metaData = creatSpriteMetaData(r, textures[i].name); spriteMetaDatas.Add(metaData); } byte[] pngBytes = temp.EncodeToPNG(); string newPath = UPK_PREFIX + directoryName + ".png"; FileHelper.SaveBytes(pngBytes, newPath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); TextureImporter texImp = AssetImporter.GetAtPath(newPath) as TextureImporter; texImp.isReadable = true; if (texImp != null) { processToSprite(texImp, spriteMetaDatas); } texImp.SaveAndReimport(); UpkAniVO unAniVo = ScriptableObject.CreateInstance <UpkAniVO>(); List <SpriteInfoVO> list = new List <SpriteInfoVO>(); UnityEngine.Object[] objects = AssetDatabase.LoadAllAssetsAtPath(newPath); Sprite item; for (int i = 0; i < objects.Length; i++) { item = objects[i] as Sprite; if (item) { int index = nameList.IndexOf(item.name); if (index != -1) { addItemAt(item, index, list); } } } newPath = UPK_PREFIX + directoryName + ".asset"; if (File.Exists(newPath) == false) { unAniVo.keys = list; AssetDatabase.CreateAsset(unAniVo, newPath); } else { unAniVo = AssetDatabase.LoadAssetAtPath <UpkAniVO>(newPath); if (unAniVo != null) { unAniVo.keys = list; EditorUtility.SetDirty(unAniVo); } } AssetDatabase.SaveAssets(); if (updateIt) { AssetDatabase.Refresh(); unAniVo = AssetDatabase.LoadAssetAtPath <UpkAniVO>(newPath); if (unAniVo != null) { Selection.activeObject = unAniVo; } } }