I spent an entire work day and a half trying to do what sounds like a very simple task. Trying everything I could find in Unity Answers and have not been able to do one very simple thing:
I have a canvas space set up as Screen Space - Overlay, and I have a menu script that uses GUI elements. I literally just want to be able to make blank canvas buttons over the GUI.Buttons in my script so I can have mouseover effects.
My GUI uses a scaling matrix, and no matter what I try, the RectTransform buttons always seem to be off from the GUI.Button(Rect).
If there’s anyone out there who knows how to convert a screen Rect to a RectTransform I would be eternally grateful
screenRect. This code should allow you to assign the control (
UIbutton in the example- the child of a screen-space-overlay canvas), to the screen space RECT provided (
Rect screenRect). The critical part is setting the anchors and pivot properly, after that it’s an (almost) straight conversion.
RectTransform rt = (RectTransform)UIbutton.transform;
rt.anchorMin = new Vector2(0, 1);
rt.anchorMax = new Vector2(0, 1);
rt.pivot = new Vector2(0, 1);
rt.position = new Vector3( ( screenRect.x), (Screen.height- screenRect.y), rt.position.z);
rt.sizeDelta = new Vector2(screenRect.width, screenRect.height);
Edit: “My GUI uses a scaling matrix” I’m not quite sure what you mean by this, I didn’t take it into account above. (which gui? the one that uses the screen space rect? when is it applied? )