Wie kann ich das verringern der Deckkraft in der Einheit?
Sehe ich dieses Thema im stack over flow, aber ich denke, es ist falsch
Macht ein Objekt transparent, so dass es nicht gesehen werden kann, ist nicht der effizienteste Weg, um Dinge zu tun. Was Sie lieber machen möchte, ist der renderer deaktiviert, wenn Sie nicht wollen, um es zu sehen, und aktiv, wenn Sie tun.
Wenn Sie auf Ihre gameObject
im editor, es sollte eine Mesh-Renderer als eine der Komponenten.
Bis auf inaktiv setzen von einem Skript im Anhang zu dieser gleichen gameObject
Sie können dies tun,...
gameObject.GetComponent<Renderer> ().enabled = false;
Wenn Sie wirklich wollen, um mit Transparenz, können Sie dies tun...
gameObject.GetComponent<Renderer> ().material.color.a = 0;
Obwohl, wenn Sie die Einstellung der Transparenz, die Sie benötigen, um sicherzustellen, dass die shader des Materials mit Transparenz unterstützt. Ich würde vorschlagen, mit der Legacy Shaders/Transparent Diffuse shader.
Wie ich verwenden können:
gameObject.GetComponent<Renderer> ().material.color.a = 0;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für diejenigen, die vielleicht noch kommen, über diese Frage
gameObject.GetComponent<Renderer> ().material.color
ist nicht eine variable. Erstellen Sie eine variable als solche:Dann weisen Sie Ihren Wert:
Sich auch bewusst sein, dass nicht alle Shader haben eine
_Color
Eigenschaft. In meinem Fall hatte ich zu verwenden:Wie du schon in deiner eigenen Frage, das Objekt, rufen Sie diese, muss ein shader, die Transparenz unterstützt. In Unity5, bei Verwendung der standard-shader, müssen Sie explizit den Wert "Transparent" manipulieren zu können, wird der alpha-Wert.
Es sollte auch Ihnen klar sein, dass der alpha-Wert ist ein
float
das geht von0.0f
zu1.0f
, so z.B. Einstellungmachen das Objekt zu 50% transparent.
color
'sa
können nicht geändert werden-ist diese Antwort noch aktuell?public float a;
, sind Sie sicher, dass Sie mitUnityEngine.Color
? Als work-around, Sie können auch re-konstruieren der Farbe zu tunvar color = gameObject.GetComponent<Renderer>().material.color; var newColor = new Color(color.r, color.g, color.b, 0.5f); gameObject.GetComponent<Renderer>().material.color = newColor;
Versuchen auf diese Weise