Author Topic: change UI2DSprite's sprite at runtime broken?  (Read 7519 times)

mishaps

  • Jr. Member
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 65
    • View Profile
change UI2DSprite's sprite at runtime broken?
« on: September 15, 2014, 02:23:13 AM »
I'm trying to change a sprite at runtime but it doesn't work. I set my2DSprite.2DSprite to a unityengine.sprite but it never seems to appear on the screen?

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: change UI2DSprite's sprite at runtime broken?
« Reply #1 on: September 15, 2014, 04:23:36 AM »
I assume you mean UI2DSprite.sprite2D. Works fine here. What code are you using?

mishaps

  • Jr. Member
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 65
    • View Profile
Re: change UI2DSprite's sprite at runtime broken?
« Reply #2 on: September 16, 2014, 01:12:00 AM »
thanks for the quick reply Aren, you assume right!  ;D here's the code I'm using:

  1. public class assignSpriteTest : MonoBehaviour {
  2.  
  3.         public UI2DSprite my2DSprite;
  4.         public UnityEngine.Sprite newSprite;
  5.  
  6.  
  7.         public void OnClick ()
  8.         {
  9.                 Debug.Log ("my2DSprite.sprite2D.name= " + my2DSprite.sprite2D.name);
  10.                 my2DSprite.sprite2D = newSprite;
  11.                 Debug.Log ("my2DSprite.sprite2D.name= " + my2DSprite.sprite2D.name);
  12.         }
  13. }

when I click the button this script is assigned to, the console outputs:
my2DSprite.sprite2D.name= (original sprite's name)
my2DSprite.sprite2D.name= (newSprite's name)


Which seems to me like everything works fine except the original-sprite is still visible, not the new one. Help!

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: change UI2DSprite's sprite at runtime broken?
« Reply #3 on: September 16, 2014, 09:34:16 AM »
Works fine here.
1. New scene.
2. ALT+SHIFT+D, ALT+SHIFT+C, choose one sprite
3. Added this script, chose another sprite on it:
  1. using UnityEngine;
  2.  
  3. public class Test : MonoBehaviour
  4. {
  5.         public UnityEngine.Sprite sprite;
  6.  
  7.         void OnClick ()
  8.         {
  9.                 GetComponent<UI2DSprite>().sprite2D = sprite;
  10.         }
  11. }
  12.  
4. Hit Play, click, sprite changes.

mishaps

  • Jr. Member
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 65
    • View Profile
Re: change UI2DSprite's sprite at runtime broken?
« Reply #4 on: September 16, 2014, 06:23:19 PM »
Great, thanks for the repro aren.  8)

UI2DSprite is fine. UIButton's auto-assigned sprite was overriding it. I just assign my new sprite to UIButton.normalSprite2D instead and everything's good. Cheers.