Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

428
Vistas
¿Cómo cambiar el color de un objeto al azar cada segundo en la unidad?

Está funcionando ahora. Este es el código correcto. InvokeRepeating toma 3 argumentos. Agregué los colores que necesitaba y seleccioné mi renderizador de malla.

 using UnityEngine; public class colorchange : MonoBehaviour { public Color []colors; public Renderer rendering; void Start () { InvokeRepeating ("ChangeColor", 0f, 1f); } void ChangeColor() { rendering.material.color = colors[Random.Range(0, colors.Length -1)]; } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

public Renderer renderer; void Start() { InvokeRepeating("ChangeColor", 1.0f, 1.0f); } void ChangeColor() { renderer.material.color = new Color(Random.Range(0f,1f), Random.Range(0f,1f), Random.Range(0f,1f), 1.0f); }

Un problema importante es que dará un color realmente "feo" en muchas ocasiones. Así que estaría mejor con una colección de colores para elegir:

 public Color []colors; public Renderer renderer; void Start() { InvokeRepeating("ChangeColor", 1.0f, 1.0f); } void ChangeColor() { renderer.material.color = colors[Random.Range(0, colors.Length -1)]; }

Alguna fuente de información para consultar: https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.htmlhttps://docs.unity3d.com/ScriptReference/Renderer-material.html

over 4 years ago · Santiago Trujillo Denunciar

0

  • Debe obtener el componente del renderizador y usarlo para cambiar su material (en lugar de acceder estáticamente a la clase 'Renderer' que no funcionará para su propósito).
  • Al crear el nuevo color aleatorio, debe asignarlo a una variable, en su caso, 'newColor' porque actualmente esta variable no existe en su secuencia de comandos.
  • Random.value no es una cosa :)

El siguiente código usa un bloque de propiedades para cambiar el color del material del renderizador, evitando la creación de un nuevo material (para un mejor rendimiento y creo que es una mejor práctica).

 using UnityEngine; [RequireComponent(Renderer)] public class ColorChange : MonoBehaviour { [SerializeField] private float _changeColorAfterSeconds = 1f; private Renderer _renderer; private float _timer = 0f; private MaterialPropertyBlock _block; private void Awake() { _renderer = GetComponent<Renderer>(); _block = new MaterialPropertyBlock(); } private void Update () { _timer += Time.deltaTime; if (_timer >= _changeColorAfterSeconds) { Color newColor = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f); _block.SetColor("_Color", newColor); _renderer.SetPropertyBlock(_block); _timer = 0f; } } }

Para simplemente arreglar su script/hacer que funcione como está:

 using UnityEngine; public class colorchange : MonoBehaviour { private float timer = 0f; void Update () { timer += Time.deltaTime; if (timer >= 1f) { Color newColor = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1.0f); GetComponent<Renderer>().material.color = newColor; timer = 0f; } } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda