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 /
avatar image
0
Question by Chocolade · Dec 29, 2017 at 02:01 AM · c#scripting problemscript.

How can I color array of gameobjects over time ?

I don't want to color each gameobject in the array in 5 seconds. I want to color all the gameobjects in the array in 5 seconds.

This is the Colors script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Colors : MonoBehaviour
 {
     public GameObject[] objectsToColor;
     public Color startColor;
     public Color endColor;
     public float colorDuration;
 
     public void Initis()
     {
         foreach (GameObject rend in objectsToColor)
         {
             startColor = rend.GetComponent<Renderer>().material.color;
         }
         endColor = Color.green;
     }
 
     public IEnumerator ChangeColor()
     {
         float t = 0;
 
         while (t < colorDuration)
         {
             foreach (GameObject rend in objectsToColor)
             {
                 t += Time.deltaTime;
                 rend.GetComponent<Renderer>().material.color = Color.Lerp(startColor, endColor, t / colorDuration);
                 yield return null;
             }
         }
     }
 }
 

And this is how I'm using it:

 if (Input.GetKeyDown(KeyCode.C))
         {
             StartCoroutine(colors.ChangeColor());
         }

The problem is that it's coloring all the gameobjects in the array very fast at once. And i set in the Inspector the colorDuration value to 5. But it's not coloring the gameobjects in 5 seconds but coloring them at once in one frame.

Again i want to color all the gameobjects in the array at once but over 5 seconds ! Can't figure out how to do it.

Comment
Add comment · Show 1
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 Ginxx009 · Dec 29, 2017 at 03:40 AM 0
Share

StartCoroutine(colors.ChangeColor(5)); i'm not that sure :) haha

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by toddisarockstar · Dec 29, 2017 at 10:54 AM

   //push the spacebar !!!
 
     public GameObject[] objectstocolor;
     public Color[] startcol;
     public Color endcol=Color.blue;
     public int seconds=5;
 
     Color diff;
 
     public float timer;
     public float amount;
     bool go;
     int i;
 
     void Start(){
 
         i = objectstocolor.Length;
         startcol = new Color[i];
         while (i>0) {i--;
             startcol[i]=objectstocolor[i].transform.renderer.material.color;    
         }
 
     }
     
 
     void Update () {
         if(Input.GetKeyDown("space")){go=true;
 
         }
         if (go) {
             i=objectstocolor.Length;
             while(i>0){i--;
             diff = startcol[i] - endcol;
                         timer += Time.deltaTime;
                         amount = timer / seconds;
             if(amount>=1){go = false;amount = 1;}
             objectstocolor[i].renderer.material.color=startcol[i]-(diff*amount);
             }
             
                 }
     }


you need to remember the start color for all the objects independently then get the difference between each object's start color and the endcolor

the timer creates a float between 0 and 1 using the amount seconds you want and time passed. now this float can be multiplied to the difference then added to the startcolor to create the magic you are looking for.

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
avatar image
1

Answer by leebrium · Dec 29, 2017 at 09:28 AM

Hello @Chocolade ! From your explanation, i assume that all the gameobject's color in the objectsToColor[] are the same. you could try like this in the Initis() :

 public void Initis()
     {
         startColor = objectsToColor[0].GetComponent<Renderer>().material.color; //just get one color
 
         endColor = Color.green;
     }


and in the ChangeColor coroutine :

  public IEnumerator ChangeColor()
     {
         float t = 0;
 
         while (t < colorDuration)
         {
             t += Time.deltaTime;
             rend.GetComponent<Renderer>().material.color = Color.Lerp(startColor, endColor, t);
             yield return null;
         }
     }


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

441 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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

How can i find the current active/enabled true camera and sort list of cameras make the active camera first ? 2 Answers

How can i create array of texture2d with variables names ? 2 Answers

How can i spawn new gameobjects to be inside the terrain area ? 2 Answers

How can i change vertex posiiton to push it back -1 on z ? 1 Answer

How can i use a bool to decide when to move the character or not ? 2 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