Weirdly enough, I've seen some discussion about this, and I've even done a help ticket. The trick, if I remember correctly, is putting all of these materials and particles into a static object so that they're loaded and cached throughout the lifetime of the app. That is to say: make a scene of nothing and put a script with static variables into it.