Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 Fox_GAMING · Dec 16, 2020 at 06:07 PM · c#shadermaterialrandomcolor change

How to randomly change the color of a Shader Graph Material for only a specified GameObject, with C# script?

Hi, I'm working on a game, where the player picks up trash from Trash cans, and dumps the trash from the Trash cans into a Trash Truck. The world of the game itself is randomly generated, with randomly selected houses, with random rotations, and random Trees, Flowers, etc., etc.. I'm trying to make each one of the houses, have a randomly picked color, for each house. The problem is, I'm using a Shader Graph Material for the material of the houses, so how could I choose the random color, and for each house, not for the entire material, but just the material on each house? Also, I'm using a Vector 1 Node, plugged into the X Input Value of a Vector 2 Node, plugged into the Seed Input of a Random Range Node, which controls a Hue Node. I'm trying to control the value of the Vector 1 Node. Here's the Shader Graph Layout I have for this material:

Shader Graph Node Layout Image

And here's the current script I'm currently using to (try to,), control the color / Randomize the Color:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class RandomHouse : MonoBehaviour
 {
     public GameObject[] houses;
     private GameObject house;
     public float[] randRots = new float[] { 0.0f, 90.0f, 180.0f, 270.0f, 360.0f };
 
     public float timewait = 1.0f;
     public RandomGen randGen;
 
     public Material wallMat;
     private Renderer renderer;
 
     // Start is called before the first frame update
     void Start()
     {
         RandHouse();
     }
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetKey(KeyCode.T))
         {
             Debug.Log("Instantiate Update!");
             Destroy(house);
             RandHouse();
         }
     }
 
     void RandHouse()
     {
         int randVal = Random.Range(0, randRots.Length);
         //MaterialPropertyBlock matBlock = new MaterialPropertyBlock();
         //matBlock.SetFloat("Vector1_172A5ED5", Random.Range(0.0f, 360.0f));
         //wallMat.SetFloat("Vector1_172A5ED5", Random.Range(0.0f, 360.0f));
         house = Instantiate(houses[Random.Range(0, houses.Length)], new Vector3(0.0f, 0.0f, 0.0f), Quaternion.Euler(0.0f, randRots[randVal], 0.0f), transform);
         //renderer = house.GetComponent<Renderer>();
         //renderer.SetPropertyBlock(matBlock);
         house.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
         //renderer.SetPropertyBlock(matBlock);
         StartCoroutine(WaitTime(timewait));
     }
 
     IEnumerator WaitTime(float wtime)
     {
         yield return new WaitForSeconds(wtime);
 
         randGen.RandNew();
         yield return null;
     }
 }
 

I've currently commented-out the bits of code that are supposed to make the color random / randomize the color, since it seems to break another part of my script (I think it's actually the Coroutine, now that I think about it,),.

If anyone needs any more information, please, let me know! Thanks!

unity-shadergraph-randomcolor-issue.png (80.8 kB)
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 Fox_GAMING · Dec 15, 2020 at 11:17 PM 0
Share

No responses? I thought so...

1 Reply

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

Answer by Fox_GAMING · Dec 21, 2020 at 10:11 AM

Thanks for the help, everyone. I was able to reach a solution, in case anyone is wondering, here's what I did:

Here's the full, working Script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class RandomHouse : MonoBehaviour
 {
     [Header("House Prefabs")]
     [Tooltip("All the Available House-Prefabs to Choose From to Randomly Generate.")]
     public GameObject[] houses;
     private GameObject house;
 
     [Space]
     [Header("Random Rotation Values")]
     [Tooltip("All the Available Rotations to Choose From to Rotate Each House To / By.")]
     public float[] randRots = new float[] { 0.0f, 90.0f, 180.0f, 270.0f, 360.0f };
 
     [Space]
     [Header("House Clone List")]
     [Tooltip("A List of all of the House Clones / Randomly Spawned Houses.")]
     [SerializeField] private List<GameObject> houseClone = new List<GameObject>();
 
     [Space]
     [Header("Other-Generation-Related")]
     [Tooltip("Float Timewait- How long to wait before Generating new Randomly-Generated GameObjects.")]
     public float timewait = 1.0f;
     [Tooltip("The RandomGen Script, used to (Randomly) Generate GameObjects in each Plot.")]
     public RandomGen randGen;
 
     private Renderer renderer;
 
     // Start is called before the first frame update
     void Start()
     {
         //Generate House on Start.
         RandHouse();
     }
 
     // Update is called once per frame
     void Update()
     {
         //If "T" Key Pressed, Generate Again.
         if (Input.GetKey(KeyCode.T))
         {
 
             //Destroy all the Old Randomly-Chosen Houses.
             Debug.Log("Instantiate Update!");
             Destroy(house);
             houseClone.Clear();
             RandHouse();
         }
     }
 
     void RandHouse()
     {
         //Choose and Spawn a Random House.
         int randVal = Random.Range(0, randRots.Length);
         house = Instantiate(houses[Random.Range(0, houses.Length)], new Vector3(0.0f, 0.0f, 0.0f), Quaternion.Euler(0.0f, randRots[randVal], 0.0f), transform);
         houseClone.Add(house);
 
         //Choose a Random Color for each Randomly-Chosen House.
         Renderer houserenderer = house.GetComponentInChildren<Renderer>();
         foreach (GameObject house in houseClone)
         {
             for (int mat = 0; mat < houserenderer.materials.Length; mat++)
             {
                 Debug.Log("Current Material: " + houserenderer.materials[mat].name);
                 if (houserenderer.materials[mat].name == "wall (Instance)")
                 {
                     Debug.Log("Mat Wall Found!");
                     MaterialPropertyBlock matBlock = new MaterialPropertyBlock();
                     matBlock.SetFloat("Vector1_172A5ED5", Random.Range(0.0f, 360.0f));
                     renderer = house.GetComponentInChildren<Renderer>();
                     renderer.SetPropertyBlock(matBlock, mat);
                 }
             }
         }
 
         //Set Each Randomly-Chosen Spawned House to the Local Center.
         house.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
         StartCoroutine(WaitTime(timewait));
     }
 
     IEnumerator WaitTime(float wtime)
     {
         //Generate New Random GameObjects in each Plot.
         Debug.Log("Start Wait Gen...");
         yield return new WaitForSeconds(wtime);
         Debug.Log("Wait Finished, Should be Genererating...");
         randGen.RandNew();
         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

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

Create Staining effect 0 Answers

Access properties of Material through script. 3 Answers

How to make enemies flash on hit 2 Answers

UI Triangle Color picker 0 Answers

Special shader question. How to draw half an object with one shader and the other half with another? 1 Answer


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