Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • 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 /
  • Help Room /
avatar image
1
Question by HeaDiii · Sep 06, 2015 at 08:11 PM · 2d gamespritescolors

Change transparency of many Sprites at once.

I'd like to change the transparency of many Sprites at once from within a script. All these Sprites are Children of a parent-object. Can i handle this through this parent? It would be a pain to change all these Sprites one by one, so i guess there is an easy way to do this.

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 hexagonius · Sep 06, 2015 at 08:19 PM 0
Share

run GetComponentsInChildren() on the parent and save the result. iterate over the array as often as you want to change alpha. within the block, grab the color of each, tune color.a down and reassign.

avatar image HeaDiii · Sep 06, 2015 at 09:07 PM 0
Share

I think i understood the idea, but i can't figure out how to do this. $$anonymous$$y Code looks like this:

 objects = GetComponentsInChildren<SpriteRenderer> (true);
         for(int i = 0; i < objects.Length; i++){
             float f = objects[i].GetComponent<SpriteRenderer>().color.a;
             // Change the alpha here.
         }

objects is declared as as a Component array.

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by HeaDiii · Sep 09, 2015 at 09:04 PM

Okay i did it. It was a bit hard to understand for me, but i'll explain what i did.

At first i struggled with the reassigning part, because i was only able to get the components of the children. I felt the urge to modify the components of the children themselves, which wasn't possible because i was only able to GET the components, not SET them.

So i saved the SpriteRenders of my Sprites with

 SpriteRenderer[] renderer = gameTiles.GetComponentsInChildren<SpriteRenderer> ();

next, i modified my values inside the renderer array. After that, i wanted to reassign the SpriteRenderers to my Sprites like

 gameTiles.SetComponentsInChildren ... ;

... which isn't possible of course. Now i just found out, that the SpriteRenderers are some kind of mutable-Datatypes. In programming language you can say, that each instance can have more than one reference and each reference references to the same instance (seems logic). So if you try to change the value stored over one reference, you actually change the value in the instance and as soon as you do that, the values the other references are pointing to are changed as well. Means i am able to do just:

 foreach (SpriteRenderer r in renderer) {
                 r.color = new Vector4 (r.color.r, r.color.g, r.color.b, r.color.a + 0.008f);
             }

and i'm fine. No reassigning needed. Working as intended. And yea, that was the part that i was missing. Simple as that.

If i explained something wrong, please correct me.

Comment
Add comment · Share
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

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.

Follow this Question

Answers Answers and Comments

28 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Weapon following mouse and orbiting Player 1 Answer

White (not transparent) background in sprite [graphicsgale] 0 Answers

Sprite Shape Not Working In Unity 2018 0 Answers

How do I outline sprites hidden behind another sprite? 0 Answers

Selecting a game object in Unity 2d 3 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