Пример #1
0
    // Try to generate a spritesheet object from the given object, which is expected to be a multi-sprite texture.
    // Return true iff generation is successful.
    protected static bool try_generate_spritesheet(Object obj)
    {
        Debug.Log("Generating a spritesheet for: " + obj);
        string path = AssetDatabase.GetAssetPath(obj);

        if (path.Length <= 0 || !File.Exists(path))
        {
            Debug.LogWarning("Invalid path for asset");
            return(false);
        }
        Object[] sprites = AssetDatabase.LoadAllAssetsAtPath(path);
        IOrderedEnumerable <Object> ordered_sprites = sprites.OrderBy(sprite => sprite.name);

        spritesheet new_spritesheet = ScriptableObject.CreateInstance <spritesheet>();

        new_spritesheet.sprites = new List <Sprite>();

        foreach (Object sprite in ordered_sprites)
        {
            if (sprite is Sprite)
            {
                new_spritesheet.sprites.Add((Sprite)sprite);
            }
        }

        string new_path = save_util.remove_extension(path) + ".asset";

        AssetDatabase.CreateAsset(new_spritesheet, new_path);
        return(true);
    }
Пример #2
0
    // Try to generate a spritesheet object from the given object, which is expected to be a multi-sprite texture.
    // Return true iff generation is successful.
    protected static bool try_generate_spritesheet(Object obj)
    {
        Debug.Log("Generating a spritesheet for: " + obj);
        string path = AssetDatabase.GetAssetPath(obj);

        if (path.Length <= 0 || !File.Exists(path))
        {
            Debug.LogWarning("Invalid path for asset");
            return(false);
        }
        Object[] sprites = AssetDatabase.LoadAllAssetsAtPath(path);

        // Alphanumeric sorting fix!
        //IOrderedEnumerable<Object> ordered_sprites = sprites.OrderBy(sprite => sprite.name);
        IOrderedEnumerable <Object> ordered_sprites = sprites.OrderBy(sprite => string_util.PadNumbers(sprite.name));

        // Try to find an existing asset for this spritesheet, and repopulate it.
        // Otherwise, generate a new spritesheet asset.
        string      new_path          = save_util.remove_extension(path) + ".asset";
        spritesheet spritesheet_found = AssetDatabase.LoadAssetAtPath <spritesheet>(new_path);

        if (spritesheet_found != null)
        {
            spritesheet_found.sprites.Clear();

            foreach (Object sprite in ordered_sprites)
            {
                if (sprite is Sprite)
                {
                    spritesheet_found.sprites.Add((Sprite)sprite);
                }
            }

            AssetDatabase.SaveAssets();
            Debug.Log("Spritesheet for: " + obj + " successfully saved to existing asset at: " + new_path);
        }
        else
        {
            spritesheet new_spritesheet = ScriptableObject.CreateInstance <spritesheet>();
            new_spritesheet.sprites = new List <Sprite>();

            foreach (Object sprite in ordered_sprites)
            {
                if (sprite is Sprite)
                {
                    new_spritesheet.sprites.Add((Sprite)sprite);
                }
            }

            AssetDatabase.CreateAsset(new_spritesheet, new_path);
            Debug.Log("Spritesheet for: " + obj + " successfully saved to new asset at: " + new_path);
        }
        return(true);
    }
Пример #3
0
 public override void refresh_sprite()
 {
     if (0 <= animation_index && animation_index < anim_Palettes_Bundle.sets.Count)
     {
         anim_palettes_set set = anim_Palettes_Bundle.sets[animation_index];
         if (0 <= palette_index && palette_index < set.palettes.Count)
         {
             spritesheet sheet = set.palettes[palette_index];
             if (0 <= sprite_index && sprite_index < sheet.sprites.Count)
             {
                 image.sprite = sheet.sprites[sprite_index];
             }
         }
     }
 }
Пример #4
0
 public virtual void refresh_sprite()
 {
     if (sprite_renderer == null)
     {
         return;
     }
     if (0 <= palette_index && palette_index < anim_Palettes_Bundle.sets.Count)
     {
         anim_palettes_set set = anim_Palettes_Bundle.sets[palette_index];
         if (0 <= animation_index && animation_index < set.palettes.Count)
         {
             spritesheet sheet = set.palettes[animation_index];
             if (0 <= sprite_index && sprite_index < sheet.sprites.Count)
             {
                 sprite_renderer.sprite = sheet.sprites[sprite_index];
             }
         }
     }
 }