Disclaimer… I am an artist and Unity fiddler (read Non-coder).
Well, my best results have came in the form of fairly large particle systems being parented to the camera or character (for any sort of moving character).
**note adding a world particle collider via the component>particles menu can help if you need snow-like particles to accumulate on objects/terrain.
But, I think that for a large area you would run into particle density/fill rate issues.
One theory that might work is as follows: Have a particle system that follows the player around (parented or otherwise). But in the distance, X units away from the player, have a series of planes with UV scrolling that mimic the particles. This could add a decent representation of rain/snow without much cost to the CPU or GPU.
you would then need to fade out or turn off the planes when the player got close to them.
If you have seen the Unity 3 initial demo video of the dark, rainy city… it looks awesome (although I haven’t been able to run around in it yet). I would be interested to hear how they accomplished the weather effects… * hint, hint.
As far as changing things dynamically, it would be possible to simply switch either the texture or material of the effect, either particle texture, or scrolling plane texture at run-time to add variation.
This is simply the first solution that came to mind… given some of the tests that I have ran. I hope you got some use out of this reply.
If you want an example to look at, the old DikuMUD source I remember having a rather involved weather system, with calculations based on barometric pressure and what not.
Once you have a system for variable weather patterns across your zones, it’s then a simple matter of parenting the proper particle emitter to the camera.