The question is answered, right answer was accepted
random color not working
I'm trying to give a material a random color every update. Here is my code:
using UnityEngine;
using System.Collections;
public class pTurretMaterial : MonoBehaviour {
public Renderer rend;
void Start () {
rend = GetComponent<Renderer>();
}
void Update () {
rend.material.color = Color(Random.Range(0, 1), Random.Range(0, 1), Random.Range(0, 1), 255);
}
}
But I keep getting this error message:
Assets/Scripts/pTurretMaterial.cs(16,31): error CS0119: Expression denotes a type', where a
variable', value' or
method group' was expected
What am I doing wrong?
Fixed the code part. You just have to use the 101010 button which basically just indents everything by 4 spaces
Answer by NoseKills · Jul 05, 2016 at 08:40 AM
When you call the constructor of a class or struct to make a new instance of a class, you have to use the new
keyword
rend.material.color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f);
Also the range of the alpha value is 0-1 just like the other components, so use 1 instead of 255 as the last parameter.
Edit: Just noticed you are using integer parameters in your Random.Range() calls. When you do that, you also get an integer back so Random.Range(0, 1) can only return 0. You have to use floats as parameters to get floats back. Just put an 'f' after the number to make it a float
In your question you say the problem is the error you are getting. Did the error go away?
Also I edited my answer.
Follow this Question
Related Questions
What is color and what is material (in the context of gameobject)? 1 Answer
Colour showing up differently? 0 Answers
Unity default material with strange purple reflex and shadows. 1 Answer
Script to find material and textures of selected prefab 0 Answers
How do I detect what color a gameobject is touching? 1 Answer