J'utilise le nouveau shader HDRP / LitTesselation.
Je souhaite modifier la Couleur de base + Opacité lors de l'exécution:
J'ai ajouté ce code au script de l'objet de jeu:
void start()
{
Color color = new Color(100, 50, 100, 150);
//Fetch the Renderer from the GameObject
Renderer rend = GetComponent<Renderer>();
//Set the main Color of the Material to green
rend.material.shader = Shader.Find("_Color");
rend.material.SetColor("_Color", color);
}
Mais il génère un code Hidden / InternalShaderError > erreur dans le shader. Quelqu'un peut-il m'indiquer la bonne direction?
3 Réponses :
Le problème est probablement lié à cette ligne:
Color color = new Color(0.39f, 0.196f, 0.39f, 0.588f);
Selon le Documents Unity , les couleurs doivent être initialisées avec des valeurs de 0 à 1 plutôt qu'avec des nombres plus grands. Je suppose que si vous modifiez la valeur de votre variable couleur en conséquence, cela résoudra le problème. Le reste de votre code semble suivre la forme trouvée ici . P >
Essayez ce qui suit:
Color color = new Color(100, 50, 100, 150);
Merci. Je l'ai essayé, mais j'ai toujours la même erreur sur le shader: "Hidden / InternalShaderError".
Je l'ai fait fonctionner en modifiant ces lignes comme suit:
rend.material.shader = Shader.Find("HDRenderPipeline/LitTessellation");
rend.material.SetColor("_BaseColor", color);
Cochez cette réponse acceptée et fermez cette question si vous pensez que c'est la bonne solution. :)
Ceci est pour HDRP / Lit:
private Material _mat;
void Start()
{
Renderer nRend = GetComponent<Renderer>();
_mat = nRend.material;
}
void Update()
{
Color nNew = //do whatever you want here
_mat.SetColor("_BaseColor", nNew);
}
J'ai lu une fois que "sharedMaterial" devrait être utilisé à la place de "material". Cependant, je pense que c'était juste une faute de frappe. "sharedMaterial" affecterait TOUS les matériaux HDRP / Lit, je pense.