Elharter Geschrieben 26. Januar 2021 Melden Share Geschrieben 26. Januar 2021 Hey Kollegen, nun mein Code: void OnMouseOver() { Debug.Log("Mouse is over:" + gameObject.name); Renderer[] rs = gameObject.GetComponentsInChildren<Renderer>(); int i = 0; foreach (Renderer r in rs) { Material m = r.material; Debug.Log("Materialname is:" + m.name); oldMaterial = r.material; oldColor = r.material.color; newMaterial = new Material(oldMaterial); newColor = new Color(oldColor.r, oldColor.g, oldColor.b, 0.10f); //newMaterial.SetColor("Color", newColor); //newMaterial.SetColor("_Color", newColor); newMaterial.SetColor("_BaseColor", newColor); newMaterial.color = newColor; newMaterial.EnableKeyword("_Surface"); newMaterial.SetFloat("_Surface", (float)SurfaceType.Transparent); newMaterial.name = "Modified Material"; r.material = newMaterial; i++; } } void OnMouseExit() { Debug.Log("Mouse is exited from:" + gameObject.name); Renderer[] rs = gameObject.GetComponentsInChildren<Renderer>(); int i = 0; foreach (Renderer r in rs) { r.material = oldMaterial; i++; } } Ganz seltsames Verhalten. Grundsätzlich: es passiert nix. Weder die Farbe, noch das Surfacetype ändert sich. Clicke ich jedoch im Inspector und klappe den Shader AUF, nimmt er den neuen Wert einmal an. (Ich benutze URP) Was ist hier los? Jemand eine Idee? danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Elharter Geschrieben 26. Januar 2021 Autor Melden Share Geschrieben 26. Januar 2021 Ich hab den Code jetzt nochmal verändert zu diesem: void OnMouseOver() { Debug.Log("Mouse is over:" + gameObject.name); Renderer[] rs = gameObject.GetComponentsInChildren<Renderer>(); int i = 0; foreach (Renderer r in rs) { Material m = r.material; Debug.Log("Materialname is:" + m.name); newColor = new Color(m.color.r, m.color.g, m.color.b, 0.25f); //newMaterial.SetColor("Color", newColor); //newMaterial.SetColor("_Color", newColor); m.EnableKeyword("_BaseColor"); m.SetColor("_BaseColor", newColor); m.color = newColor; m.EnableKeyword("_Surface"); m.SetFloat("_Surface", (float)SurfaceType.Transparent); i++; } } void OnMouseExit() { Debug.Log("Mouse is exited from:" + gameObject.name); Renderer[] rs = gameObject.GetComponentsInChildren<Renderer>(); int i = 0; foreach (Renderer r in rs) { Material m = r.material; newColor = new Color(m.color.r, m.color.g, m.color.b, 1f); m.EnableKeyword("_BaseColor"); m.SetColor("_BaseColor", newColor); m.color = newColor; m.EnableKeyword("_Surface"); m.SetFloat("_Surface", (float)SurfaceType.Opaque); i++; } } selbes Verhalten..... GANZ komisch... Siehe Video hier: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.