Пример #1
0
 public void OnEnable()
 {
     upkAniVo      = (UpkAniVO)target;
     _totalFrame   = upkAniVo.keys.Count;
     _currentFrame = 0;
     _frameTime    = 0;
 }
Пример #2
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;
                }
            }
        }