- Home /
Scaling a guitexture hierarchy and maintaining layout in code
I have a function I've written to scale an arbitrary hierarchy of guitextures, maintaining their layout and proportional scales (it's a massive pita that this can't just be done by messing with the scale of the root transform, but anyway):
// this function scales all guitextures in the object to the same proportions, maintaining the original layout // this is only possible because we've remembered the layout and scalings in the original hierarchy in Start() by storing them in the mInitialInsets dictionary public void ScaleTo( float zProp ) { foreach ( KeyValuePair< GUITexture, Rect > pair in mInitialInsets ) { // copy the struct and modify the values Rect copy = pair.Value; copy.width *= zProp; copy.height *= zProp; copy.x += (pair.Value.width - copy.width) / 2.0f; // move the origin right by half the difference in width copy.y -= (pair.Value.height - copy.height) / 2.0f; // move the origin up by half the difference in height
Debug.Log(" scaling " + pair.Key.name + " fom " + pair.Value + " to " + copy);
pair.Key.pixelInset = copy;
}
}
This code is attached to an empty GO and an arbitrary number of guitextures are placed below it.
Now the code itself 'works' in the sense that I can watch the pixel inset values on all the gui textures change as I expect, the maths are all correct. However, visually this doesn't work at all. This seems to be due to the fact that a guitexture's origin is totally random in each case. Some of them treat (0,0) as the top left of their parent, some as the bottom left, some middle left. So whilst the x scaling works fine, the y scaling sends the components off to seemingly random locations.
The entire hierarchy has all of their transforms zeroed, position, rotation and scale. The hierarchy is only one deep. I cannot begin to understand what's causing this. Any help appreciated.
Your answer
Follow this Question
Related Questions
Layouts with GUITextures 2 Answers
Layering GUI Texture 3 Answers
Reduce Draw call for Multiple GUI Textures with same Texture 1 Answer