Tasharen Entertainment Forum

Support => NGUI 3 Support => Topic started by: Fractalbase on June 17, 2014, 05:57:28 PM

Title: UISprite: help configuring, for using SetRect properly
Post by: Fractalbase on June 17, 2014, 05:57:28 PM
Hi,

I'm attempting to draw UISprites with static and dynamic dimensions at dynamic positions on the screen base on the game screen resolution.  Unfortunately, the sprites don't seem to line up correctly with the Y access.  Any help?



using UnityEngine;
using System.Collections;



public class ManageGameScreen : MonoBehaviour
{

   // Use this for initialization
   void Start()
    {
        //int MaxPixelX = Screen.currentResolution.width;
        //int MaxPixelY = Screen.currentResolution.height;
        int MaxPixelX = 992;
        int MaxPixelY = 888;

        print("screen resolution: " + MaxPixelX + "x" + MaxPixelY);

        int HalfPixelX = (MaxPixelX / 2);
        int HalfPixelY = (MaxPixelY / 2);

        print("half screen resolution: " + HalfPixelX + "x" + HalfPixelY);

        UISprite[] screenElements = gameObject.GetComponentsInChildren<UISprite>();

        foreach (UISprite sprite in screenElements)
        {
            if (sprite.gameObject.name.Equals("Sprite - Text Input Field"))
            {
                print("textInputField");
                sprite.pivot = UISprite.Pivot.TopLeft;
                int xPos = -HalfPixelX;
                int yPos = -(HalfPixelY - 20);
                int xDim = MaxPixelX;
                int yDim = 20;
                print("xPos: " + xPos + "; yPos: " + yPos + "; xDim: " + xDim + "; yDim: " + yDim + ";");
                sprite.SetRect(xPos, yPos, xDim, yDim);
            }
            else if (sprite.gameObject.name.Equals("Sprite - Text Response Box"))
            {
                print("textResponseBox");
                sprite.pivot = UISprite.Pivot.TopLeft;
                int xPos = -HalfPixelX;
                int yPos = -(HalfPixelY - 140);
                int xDim = MaxPixelX;
                int yDim = 120;
                print("xPos: " + xPos + "; yPos: " + yPos + "; xDim: " + xDim + "; yDim: " + yDim + ";");
                sprite.SetRect(xPos, yPos, xDim, yDim);
            }
            else if (sprite.gameObject.name.Equals("Sprite - Minimap"))
            {
                print("minimap");
                sprite.pivot = UISprite.Pivot.TopLeft;
                int xPos = (HalfPixelX - 192);
                int yPos = HalfPixelY;
                int xDim = 192;
                int yDim = 192;
                print("xPos: " + xPos + "; yPos: " + yPos + "; xDim: " + xDim + "; yDim: " + yDim + ";");
                sprite.SetRect(xPos, yPos, xDim, yDim);
            }
            else if (sprite.gameObject.name.Equals("Sprite - Text Info Box"))
            {
                print("textInfoBox");
                sprite.pivot = UISprite.Pivot.TopLeft;
                int xPos = (HalfPixelX - 192);
                int yPos = (HalfPixelY - 192);
                int xDim = 192;
                int yDim = (MaxPixelY - (192 + 120 + 20));
                print("xPos: " + xPos + "; yPos: " + yPos + "; xDim: " + xDim + "; yDim: " + yDim + ";");
                sprite.SetRect(xPos, yPos, xDim, yDim);
            }

        }

    }
   

   // Update is called once per frame
   void Update()
    {
   }

}

Title: Re: UISprite: help configuring, for using SetRect properly
Post by: ArenMook on June 18, 2014, 04:59:51 PM
Why are you doing any of this? Look at the layout system that comes with NGUI. It's a much easier way of accomplishing what you're trying to do, and it doesn't involve any coding.

http://www.tasharen.com/forum/index.php?topic=7013.0
Title: Re: UISprite: help configuring, for using SetRect properly
Post by: Fractalbase on June 21, 2014, 06:45:52 AM
Thanks, that is helpful!