es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambio de propiedad de material a través del código no se muestra.

Estoy utilizando Unity 2020.3.3f1 (HDRP).
Tengo un prefab (cubo) que tiene un material emisivo.
Después de presionar el botón del mouse, quiero que aumente su intensidad de emisión en 10.

Problema que encontré:
El Inspector me muestra que la intensidad está cambiando, pero el juego no representa esos cambios (esto significa que no se está haciendo “más brillante” aunque la propiedad del material dice que sí).

Ahora, cuando aumento la cantidad manualmente a través del Inspector, incluso solo en 0,1, de repente los cambios son visibles.

Creo que he probado todo ahora sin suerte…

Cómo se ve el código en resumen:

public Material cubeMaterial;
private float intensity = 10;

if ("mouseClick"){
intensity += 100;
cubeMaterial.setFloat("_EmissiveIntensity", intensity);
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resolver el problema de que los cambios no sean visibles en el juego, podrías intentar llamar a cubeMaterial.EnableKeyword("_EMISSION") en tu código, justo antes de establecer la intensidad de emisión. Esto asegura que la función de emisión esté habilitada en el material, lo que le permite emitir luz efectivamente.

    Tu código se vería así:

    public Material cubeMaterial;
    private float intensity = 10;
    
    if ("clicDelMouse")
    {
        intensity += 10;
        cubeMaterial.EnableKeyword("_EMISSION");
        cubeMaterial.SetFloat("_EmissiveIntensity", intensity);
    }
    

    Esto debería permitir que el cubo se vuelva visiblemente más brillante cuando hagas clic en el botón del mouse. Recuerda también asegurarte de que el material se aplique al prefab del cubo en la escena.

Comments are closed.