Ich beschäftige mich mit dem Prototyping eines Spiels in Unity, das aus festen quadratischen Sprites / Kacheln bestehen wird. Ich denke, ich kann verschiedene Arten von Objekten mit unterschiedlichen Farben für jedes der Plättchen im Spiel darstellen.
Ich denke, dass ich ein einzelnes quadratisches Sprite importieren und in Unity entsprechend schattieren kann, im Gegensatz zu importierten Quadraten mit vielen verschiedenen Farben.
Meine Erfahrung mit dem Anpassen des Farbtons und der Sättigung in Photoshop zeigt, dass Weiß keine leicht zu ändernde Farbe ist, da weiße Dinge häufig weiß bleiben. Meine Tests in Unity haben gezeigt, dass ich die "Farbe" eines Sprites in etwas anderes als Weiß ändern kann und das Sprite scheinbar angemessen schattiert ist, ungeachtet dessen, was ich angesichts meiner Photoshop-Erfahrung gedacht hätte.
Da weiße Objekte beim Ändern in Unity anscheinend die entsprechende Farbschattierung annehmen, sagt mir mein Bauch, dass dies zunächst die beste Grundfarbe ist, was bedeutet, dass ich ein einzelnes Sprite mit weißen Quadraten importieren und die Farbe einfach anpassen kann, um verschiedene Objekte darzustellen und Objektzustände.
Ist ein weißes Sprite eigentlich das beste Farb-Sprite und warum funktioniert so etwas in Unity, anstatt den Farbton und die Sättigung in Photoshop anzupassen?
Antworten:
Weiß ist die beste Grundfarbe für eine echte Darstellung. Wenn Sie Ihre Sprite-Graustufen beibehalten, können Sie die Farben für Teams usw. leicht anpassen.
Unity wendet einen
Multiply
Mischmodus auf die Sprite-Textur und -Farbe an.Einheit des Farbtyp wird von 0 bis einschließlich 1 reicht.
Color.White ist gleich
(1, 1, 1, 1)
.Zu wissen, dass
1
mal alles selbst ist.Wenn die Graustufen
texture
mit dem Sprite-Renderer-Color
Feld gemischt werden , ist jedes Pixel für sich. Durch Ändern dieses Feldes wird einfach jeder einheitliche Graustufenwert mit jeder Komponente der Farbe multipliziert.Sie können mit dem Mischmodus "Multiplizieren" in Ihrem bevorzugten Bildeditor wie Photoshop oder GIMP spielen.
quelle
Sprites-Additive.shader - GitHub Gist
Unity-Farben haben 4 Gleitkommawerte, die für viele RGBA-Farbformate typisch sind und den einzelnen prozentualen Farbwerten Rot, Grün, Blau und dem Alpha-Transparenzkanal entsprechen.
Wie oben erwähnt, ist der von Unity angewendete Standard-Farbton ein multiplikativer Shader. Photoshop nennt diesen Effekt "Multiplizieren" und der Prozess multipliziert buchstäblich die Farbwerte in den Pixeln Ihres Sprites mit dem ausgewählten Farbwert.
Das Problem dabei ist, dass ein Multiplikativer Farbmathematik-Shader IMMER den gleichen Farbton (wenn Sie mit Weiß "multiplizieren") oder eine dunklere Farbe erzeugt, wenn Sie mit etwas anderem multiplizieren. Ich bin auf die Situation gestoßen, in der ich in einer Schmiedesituation genau das Gegenteil wollte. Erhitztes Metall sollte nicht mit Gelb multipliziert werden, um einen dunkleren Farbton zu erzielen:
Stattdessen habe ich den standardmäßigen multiplikativen Shader von Unity so umgeschrieben, dass er additiv ist. Die Ergebnisse entsprachen eher dem, wonach ich gesucht hatte:
Ich werde dem umgeschriebenen Sprites-Additive.shader einen Überblick geben, wenn jemand interessiert ist.
Hier ist eine gute Referenz zu Farbterminologie und -modi: http://www.northlite.net/ps/blend.htm
quelle