Dies ist heißer Fall. Im Sinne, dass es selbst in Vorschlägen keine Erklärung gibt.Warum Unity3D Farbe ändert, wenn ich Farbkanäle verringern, die bereits gleich Null ist?
So.
Ich habe Würfel in Szene.
Im Zyklus beginne ich Koroutine für jeden Würfel, und das Koroutine als nächstes tun Dinge:
Es ändert sich die Farbe des Würfels von Schwarz (0, 0, 0) bis rot (1, 0, 0) und führen Sie dann umgekehrte Aktion. In meinem Code, zum Teil, wo ich die Farbe von rot nach schwarz zurückgebe, verringere ich die Werte von G- und B-Feldern. Warum sollte ich das tun? Ich tun würde, wenn ich forgeted diese Zeilen nach copypast von Aktion zu ändern, wo ich Farbe von schwarz auf rot, wenn es nicht rot war, und wenn ich änderte R und G und B.
private IEnumerator CororRoutine(Material cubeMaterial)
{
float coff = 1f;
while (cubeMaterial.color.r < 1.0f)
{
cubeMaterial.color = new Color(
cubeMaterial.color.r + coff * Time.deltaTime,
0.0f,
0.0f);
yield return new WaitForEndOfFrame();
}
while (cubeMaterial.color.r > 0.0f)
{
cubeMaterial.color = new Color(
cubeMaterial.color.r - coff * Time.deltaTime,
cubeMaterial.color.g - coff * Time.deltaTime,
cubeMaterial.color.b - coff * Time.deltaTime);
yield return new WaitForEndOfFrame();
}
}
So gibt es eine sehr seltsame Dinge passieren ... Screenshots:
Wie Sie sehen können, Würfel, die bereits in beiden Richtungen verändert haben, haben einen kleinen roten Schatten. ABER. Werte in ihrer Albedo-Farbe im Material genau (0, 0, 0). Auf dem Bildschirm sehen Sie eine Art roten Schatten auf dem Material.
Wenn Sie etwas wissen, das kann mir ein Verständnis davon, was hier passiert ist, wäre es wirklich hilfreich.
Edit_1:
Die Frage ist: Warum Farbe ändert, wenn ich Farbkanäle zu verringern, die bereits 0 ist? Machen Sie das jemandem bekannt? Ich weiß, dass ich die Werte von Kanälen, die bereits 0 ist, nicht verringern sollte. Aber es scheint sehr seltsam, wenn sich die Farbe des Materials ändert, wenn ich es tue.
Bitte geben Sie einen angemessenen Titel. Dies ist keine Zeitung. –
Welchen Shader verwenden Sie? Standard Shader? – Programmer
@Programmer Ja, ich verwende Standard-Shader mit transparentem Rendering-Modus. –