Most efficient way to do 2D animation

I’m working on a project that requires a lot of large 2D looping animation. For example, one scene has 4 animations going at once, each about 30 frames each, and the frames themselves are large PNGs stored as 2048 compressed textures (the dimensions of the actual PNGs are larger than 2048).

My approach right now is to load each frame in from Resources and change the texture of the material to the new frame. This causes the animation to run very slowly on the first loop while the frames are being loaded. Is there a better way to do this? The animations can’t be scaled down because our client wants the animations to be very high quality; in fact they’re not even happy with the 2048 compressed textures. We considered storing the textures in the scene as a Texture 2D array instead of loading them from Resources, but were worried that this would increase the load time of the scene too much, as we cannot have a long delay betweens scenes.

Is there anything we can do to make the animations load faster and run more smoothly? The target device is iPad 2 and 3.

Honestly that sounds way wrong. I am not an expert but wouldn’t it be better to have each animation as an animated gif, or as a flash movie with a transparent background, and just change the file as needed?
Loading each frame of the animation in such massive files is ludicrous!

EDIT: Have realised that animated gifs can’t be used in Unity. Refer to other comments

You could also try a script like the following, which makes use of Mono’s System.Drawing library: http://wiki.unity3d.com/index.php/AnimatedGifDrawer