在运行时创建统一材料

时间:2018-02-03 18:16:18

标签: c# unity3d

我使用简单的语法制作了像YAML这样的自定义文本语言。

object : Health : NUMBER : 1.0f (this's a comment)
object : WeaponColor : U_MATERIAL : Diffuse : TEX_BRICK : 55 : 55 : 55 : 255 (creates a new instance of a unity material with the specified parameters)

上一个示例使用 1 float和1 unity material 创建一个具有值数组的对象,其中数字的值为1.0,材质使用Legacy Diffuse着色器和纹理命名为TEX_BRICK和rgb颜色,值为55 55 55 255。

问题是如何在运行时创建新材料?我写这样的东西......

var mat = new Material("shader name", color, etc, ...)

或材料无法在运行时创建?

我使用C#和unity 2018.1.0b5

1 个答案:

答案 0 :(得分:0)

检查this

您可以先创建一个指定着色器的材质。这将是Legacy Diffuse。然后使用:

material.SetTexture("_MainTex", thetexture)

material.SetColor(r, g, b, a);

设置主要纹理和颜色。