- Home /
Trying to place an UI Canvas Image next to another UI Image
I've been trying to place 2 images on my canvas. Both image (ImageA, ImageB) will be side by side of each other. I get ImageA's width and move ImageB by half of the width. This is the code I currently have.
float posX= Screen.width * 0.18f; // arbitrary offset from the left side of the screen
float posY= Screen.height * 0.2f;
ImageA.GetComponent<RectTransform>().anchoredPosition= new Vector3(posX, posY);
widthOffSet -= ImageA.GetComponent<RectTransform>().rect.width * 0.5f;
ImageB.GetComponent().anchoredPosition= new Vector3(posX, posY);
However, the 2 Images are overlapping each other, and by a fair amount. Is this not how you offset an image from another image?
Edit: Another question is, if I scale the image, the width / height information of the RectTransform component on the identifier does not change. Do I have to manually multiply the extent by the scaled value to get the actual length of the image?
Edit #2: As mentioned by allenallenallen, I have changed my code to use anchoredPosition, instead of localPosition, and the images are still not being offsetted properly.
Answer by allenallenallen · Feb 20, 2016 at 10:53 PM
You're using it wrong. This is what determines the position of UI based on the anchor points: http://docs.unity3d.com/ScriptReference/RectTransform-anchoredPosition.html
ImageA.GetComponent<RectTransform>().anchoredPosition = new Vector2(posX, posY);
And yes, to your second question. It's just like a regular 3D GameObject, width and height have to be multiplied by the scale to get the actual lengths.
I have changed all of my code to use anchoredPosition ins$$anonymous$$d of localPosition, but Its still not offsetting properly. Would I have to do something additionally if I have are a child an empty game object that I use to organize objects in the hierarchy?