Exemplo n.º 1
0
        /// <summary>
        /// Slice an identified sprite and store its metadata
        /// in order to be detect unique sprites.
        /// </summary>
        /// <param name="sprites">List of all sprites</param>
        /// <param name="dataJsonRow">Metadata composed by the sprite properties</param>
        /// <param name="sprite">Sliced sprite detected</param>
        /// <param name="newElementName">Element detected</param>
        /// <param name="atlasJson">Serialized atlas</param>
        /// <param name="newSpritesMetadata">List of all sliced sprites</param>
        private static void SliceAndStoreMetadata(List <string> sprites, string dataJsonRow, Sprites sprite, string newElementName,
                                                  AtlasInformation atlasJson, List <SpriteMetaData> newSpritesMetadata)
        {
            int sliceWidth;
            int sliceHeight;
            int pivotX;
            int pivotY;

            // Store sprite identifier in order to not load it again in the next iteration
            sprites.Add(dataJsonRow);
            sliceWidth  = sprite.SPRITE.w;
            sliceHeight = sprite.SPRITE.h;
            pivotX      = Mathf.Abs(sliceWidth / sliceWidth);
            pivotY      = Mathf.Abs(sliceHeight / sliceHeight);


            //Slice sprite and store it in its metadata
            SpriteMetaData newSpriteMetadata = new SpriteMetaData();

            newSpriteMetadata.pivot = new Vector2((1 - pivotX), pivotY);
            newSpriteMetadata.name  = newElementName;
            newSpriteMetadata.rect  = new Rect(sprite.SPRITE.x, atlasJson.meta.size.h - sprite.SPRITE.y - sliceHeight,
                                               sliceWidth, sliceHeight);
            newSpriteMetadata.alignment = (int)SpriteAlignment.Custom;
            newSpritesMetadata.Add(newSpriteMetadata);
        }
Exemplo n.º 2
0
        public static void SetSprite(Image image, string name)
        {
            DataSprite data = DataManager.Instance.Load <DataSprite>();

            AtlasInformation information = data.GetAtlas(name);

            if (information == null)
            {
                return;
            }

            if (atlases.ContainsKey(information.name))
            {
                if (atlases[information.name] != null)
                {
                    SetSprite(image, atlases[information.name].GetSprite(name));
                }
            }
            else
            {
                ResourceManager.LoadAsync <SpriteAtlas>(information.path, (atlas) =>
                {
                    if (atlas != null)
                    {
                        SetSprite(image, atlas.GetSprite(name));
                    }
                    Add(information.name, atlas);
                });
            }
        }
Exemplo n.º 3
0
        protected static void LoadDataSprite()
        {
            DataSprite data = Load <DataSprite>();

            data.atlases = new List <AtlasInformation>();

            string[] guids = AssetDatabase.FindAssets("t:SpriteAtlas", new string[] { "Assets/Package" });

            string path;

            foreach (var guid in guids)
            {
                path = AssetDatabase.GUIDToAssetPath(guid);

                SpriteAtlas asset = AssetDatabase.LoadAssetAtPath <SpriteAtlas>(path);

                if (asset != null)
                {
                    AtlasInformation atlas = new AtlasInformation()
                    {
                        name    = asset.name,
                        path    = path.Replace("Assets/", string.Empty),
                        sprites = new List <string>(asset.spriteCount),
                    };

                    Sprite[] sprites = new Sprite[asset.spriteCount];

                    asset.GetSprites(sprites);

                    for (int i = 0; i < sprites.Length; i++)
                    {
                        atlas.sprites.Add(sprites[i].name.Remove(sprites[i].name.Length - 7, 7));
                    }
                    data.atlases.Add(atlas);
                }
            }
            AssetDatabase.SaveAssets(); AssetDatabase.Refresh();
        }