There is a default maxTextureSize value, and there is an override maxTextureSize value.
With the two values, we can update atlases in these steps:
1. Calculate the ratio of the override value against the default value. Typical values can be: 1/2, 1/4, 1/8, etc.
2. Iterate through all the atlases and do the following steps
a) Iterate through all the sprites in the atlas
b) For every sprite, find the relevant source image file, resize it (create new may be a good idea) with the ratio calculated
c) After all the image files are generated, recreate the atlas with the new image files
To solve that binary/text-based problem, you just have to add a line in NGUI readme file or web page, something like this: If you are going to use Override settings on atlases, you have to enable xxxxxx, which is located at xxxxx. I'm sure you can come up with much better way of saying it.
There is a reason why Unity provide override settings for atlases: some projects, including ours, want to manage images in a way that they are suitable for high-end devices, with the capability to downscale to fit low-end devices, in a convenient way; or in other words, there is only one copy of all the images and they are in highest resolutions.
The mess-up of UI when using atlas' override settings is a bug (or an incomplete feature) of NGUI. I'd think as the author of NGUI, you'd care to perfect your product. (I think NGUI is great, by the way.) However, if you are too busy or reluctant to do it because maybe only a few people use this feature, it will be appreciated if you can validate my theory so that I can do it myself.
Thanks.