Search Unity

GetComponent<SpriteRenderer>().sprite changes sprite to none

Discussion in 'Scripting' started by nikt7656543, Aug 10, 2020.

  1. nikt7656543

    nikt7656543

    Joined:
    Nov 17, 2019
    Posts:
    1
    Hi, i can't find solution and understand why it doesn't work

    Code (CSharp):
    1. public class mainController : MonoBehaviour
    2. {
    3. private int skinIndex;  
    4. public Sprite lolidefault,whitered,red,green,loliyellow,lolired,loligreen;
    5.  
    6.     public void ChangeSkin()
    7.     {
    8.         switch (skinIndex)
    9.         {
    10.             case 0:
    11.             {
    12.                 GetComponent<SpriteRenderer>().sprite = lolidefault;
    13.                 break;
    14.             }
    15.             case 1:
    16.             {
    17.                 GetComponent<SpriteRenderer>().sprite = whitered;
    18.                 break;
    19.             }
    20.             case 2:
    21.             {
    22.                 GetComponent<SpriteRenderer>().sprite = red;
    23.                 break;
    24.             }
    25.             case 3:
    26.             {
    27.                 GetComponent<SpriteRenderer>().sprite = green;
    28.                 break;
    29.             }
    30.             case 4:
    31.             {
    32.                 GetComponent<SpriteRenderer>().sprite = loliyellow;
    33.                 break;
    34.             }
    35.             case 5:
    36.             {
    37.                 GetComponent<SpriteRenderer>().sprite = lolired;
    38.                 break;
    39.             }
    40.             case 6:
    41.             {
    42.                 GetComponent<SpriteRenderer>().sprite = loligreen;
    43.                 break;
    44.             }
    45.         }
    46.     }
    47.     private void Start()
    48.     {
    49.         ChangeSkin();
    50.     }
    51. }
    I did assign variables to sprites
    It does change the sprite but instead to one of them changes to "none"
     
    Last edited: Aug 10, 2020
  2. adehm

    adehm

    Joined:
    May 3, 2017
    Posts:
    369
    Likely your sprite is never loaded correctly. Sprite lolidefault = Resources.Load<Sprite>("Graphics/Sprites/sprite")
     
  3. WarmedxMints

    WarmedxMints

    Joined:
    Feb 6, 2017
    Posts:
    1,035
    Have you populated the sprite references in the inspector? If you have, you may have accidentally added the maincontroller to more than one object so one is assigning the sprite and the other is setting it null.