Heim >Backend-Entwicklung >C#.Net-Tutorial >Unity 3D erläutert kurz die Probleme, die beim Shader-Laufzeitstatus und im Rendering-Modus auftreten
Der Shader in Unity verfügt über vier Rendering-Modi:
——Opaque(不透明) ——Cutout(镂空) ——Fade(隐现) ——Transparent(透明)
Ich hatte schon einmal das Bedürfnis, einem bestimmten Spielobjekt einen Einfriereffekt hinzuzufügen, aber meinem Shader
ist ein vollständig eingefrorener Shader und sein Farbwert kann nicht über Parameter angepasst werden. Später sagte mir mein Kollege, dass ich
den Alpha-Wert des Objekts selbst ändern könnte, indem ich den Rendering-Modus ändere. Der erste Schritt bestand also darin, im Internet den Code zum Ändern des Laufzeit-Shader-Rendering-Modus wie folgt zu finden.
http://www.voidcn.com/article...
//获取目标身上的渲染组件 var renderer = GetComponentsInChildren<renderer>(); // 建立一个冰冻数组 第二个数组元素是事先找好的冰冻特效 Material[] frostMatetials = new Material[2] { renderer.material, frostEffect }; //添加冰冻特效到人物身上的数组中 renderer.materials = frostMatetials; //实例化一个渲染模式变量 var fadeMode = SetMaterialRenderingMode.RenderingMode.Fade; //根据网上的方法更改你的 Shader 渲染模式为 Fade SetMaterialRenderingMode.SetMaterialRenderingModeMethod( renderer.materials[0],fadeMode);</renderer>Da der Alpha-Wert von Farbe schreibgeschützt ist und nicht geändert werden kann, Farbe jedoch geändert werden kann, müssen Sie den RGB-Wert der Zielobjektfarbe
abrufen und dann eine Farbe instanziieren und verwenden Sie den Konstruktor, um ihn auf den gewünschten Alpha-Wert zu ändern. Wie folgt:
Color currentcolor03 = new Color { a = 0.8f, r = renderer.materials[0].color.r, g = renderer.materials[0].color.g, b = renderer.materials[0].color.b }; //替换目标 Color 属性就可以实现了Eigentlich ist diese Methode nicht sehr gut, hauptsächlich weil der angegebene Shader den Attributwert nicht ändern kann. Später habe ich einen Shader bekommen, der den Attributwert
ändern kann, und die Dinge wurden viel einfacher.
Während dieser Zeit stieß ich auf ein Problem und stellte fest, dass es sich um ein Problem mit dem Compiler handelte. Als ich die erste Methode verwendete, konnte ich den Rendering-Modus normal ändern > Bedingungen, und ich habe drei Farben verwendet, die nacheinander ersetzt werden, um den Verlaufseffekt zu erzielen, aber wenn ich dieses Objekt im
Sie wählen es im Voraus aus. Der gleiche Effekt wird angezeigt, wenn das Objekt geändert werden soll, das heißt, dieses Spielobjekt kann im Kompilierungsstatus nicht ausgewählt werden und sein Renderstatus kann nicht im Inspektorfenster angezeigt werden mit einem Laufzeit-Rendering. Wörter, die
dieses Verhalten beschreiben:
Wenn Sie den Rendering-Modus eines Spielobjekt-Shaders zur Laufzeit ändern, führt die Anzeige seines Rendering-Modus dazu, dass dessen Rendering-Modus-
-Eigenschaften zurückgesetzt werden.
Das obige ist der detaillierte Inhalt vonUnity 3D erläutert kurz die Probleme, die beim Shader-Laufzeitstatus und im Rendering-Modus auftreten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!