Search Unity

  1. We are migrating the Unity Forums to Unity Discussions. On July 12, the Unity Forums will become read-only. On July 15, Unity Discussions will become read-only until July 18, when the new design and the migrated forum contents will go live. Read our full announcement for more information and let us know if you have any questions.

Set uGUI Image Width in code?

Discussion in 'UGUI & TextMesh Pro' started by tango209, Aug 21, 2014.

  1. tango209

    tango209

    Joined:
    Feb 23, 2011
    Posts:
    379
    For the life of me, I can't figure out how to set the width of a UI Image through code. I've looked through the Image and RectTransform interfaces, but I'm not seeing it. Anyone know how?
     
  2. Melang

    Melang

    Joined:
    Mar 30, 2014
    Posts:
    166
    I don't know how to set rectTransform's width programmatically either, it seems to be read-only. Would setting the scale instead work for you?

    Code (csharp):
    1.  
    2. float newscale = 2f;
    3. rectTransform.localScale = new Vector3(newscale, newscale, newscale);
    4.  
     
  3. tango209

    tango209

    Joined:
    Feb 23, 2011
    Posts:
    379
    Yeah, I noticed in the comment it said it was calculated... so I did end up using the localScale and it worked fine for what I was doing.
     
  4. djweinbaum

    djweinbaum

    Joined:
    Nov 3, 2013
    Posts:
    533
    I can't figure out how to change most of the new GUI components through script right now. For instance how the heck do I access the Image component? If we can change the width of the Rect Transform in the editor there should be a way to modify the same property the editor is modifying.

    EDIT - maybe it has something to do with RectTransformUtility
     
    Last edited: Aug 21, 2014
  5. ortin

    ortin

    Joined:
    Jan 13, 2013
    Posts:
    221
    You mustn't use scale with RectTransform if you want to change width/height;
    rectTransform.sizeDelta = new Vector2(width, rectTransform.sizeDelta.y);
     
    Tim-C likes this.
  6. tango209

    tango209

    Joined:
    Feb 23, 2011
    Posts:
    379
    You can get to the Image object by using GetComponent<Image>(). It's just a script, but it lives in the UnityEngine.UI namespace.
     
  7. tango209

    tango209

    Joined:
    Feb 23, 2011
    Posts:
    379
    Thanks ortin. That's a very confusing name.