• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by VenomRift · Aug 25, 2014 at 04:30 AM · spriterenderer

Spriterenderer not changing

So I've been trying to make a match3 game, where the board is initially spawned full of gems, and then each gem randomly becomes a certain color, but for some reason, the sprites don't want to change to the sprite that I denote in the string. Heres my code:

     public List<Gem> gems = new List<Gem>();
     public int GridWidth;
     public int GridHeight;
     public GameObject gemPrefab;
 
     void Start () 
     {
         for (int y = 0; y < GridHeight; y++)
         {
             for (int x = 0; x < GridWidth; x++)
             {
                 GameObject g = Instantiate(gemPrefab, new Vector3(x , y, 0), Quaternion.identity) 
                 as GameObject;
                 gems.Add(g.GetComponent<Gem>());
                 g.transform.parent = gameObject.transform;
             }
         }

This is the script that generates the board and adds each gem to a list. This script has no interaction with the follow script however:

     public GameObject sphere;
     int[] GemTypes = {0,1,2,3,4,5,6};
     int gemcolor;
     public List<Gem> Neighbors = new List<Gem>();
     
     void Start () 
     {
         CreateGem();
     }
     
 
     void Update () 
     {
         
     }
 
     public void CreateGem()
     {
         gemcolor = GemTypes[Random.Range(0, GemTypes.Length)];
 
         if (gemcolor == 0)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "RedGem", typeof(Sprite)) as Sprite;
         }
 
         if (gemcolor == 1)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "TealGem", typeof(Sprite)) as Sprite;
         }
 
         if (gemcolor == 2)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "BlackGem", typeof(Sprite)) as Sprite;
         }
 
         if (gemcolor == 3)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "GreenGem", typeof(Sprite)) as Sprite;
         }
 
         if (gemcolor == 4)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "WhiteGem", typeof(Sprite)) as Sprite;
         }
 
         if (gemcolor == 5)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "BlueGem", typeof(Sprite)) as Sprite;
         }
 
         if (gemcolor == 6)
         {
             sphere.GetComponent<SpriteRenderer>().sprite
             = Resources.Load("Cores" + "RedGem", typeof(Sprite)) as Sprite;
         }
 
     }

Basically it randomly selects a number, then refers the gem to a color based on the number. "sphere" is a child game object on each gem parent that has a spriterenderer. I just did this so that the parent wouldn't have the sprite, just for organization. Yet for some reason none of the gems have anything on their spriterenderers.

Comment
Add comment · Show 2
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image konsnos · Aug 25, 2014 at 07:47 AM 0
Share

Are you sure you are not getting an error? Also ins$$anonymous$$d of adding so many ifs you can use a switch, and add logs so that you know which sprite it changes to.

avatar image VenomRift · Aug 25, 2014 at 09:49 AM 0
Share

I've tried doing Debug.Log(sphere.GetComponent().sprite.name) but that gives me a: "NullReferenceException: Object reference not set to an instance of an object" error, but then again I don't know if that's how I go about printing the name of an object's sprite. There's no error playing the game normally without that line though, and yes the filenames are correct.

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

Is there a way to change a Sprite's Rect at runtime? 0 Answers

Why can't the camera render the sprite? 2 Answers

Placing the sprite game object in the players position and also enable and disable it when needed 2 Answers

Best approach for triangle tiles using Sprite Renderer for a 2D platformer 0 Answers

What does sprite-default shader do ? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges