本例用於導出TerrainForMobile/3TexturesDiffuseSimple 的shader的貼圖和縮放導出
protected const string SHADER_FILTER = "TerrainForMobile/3TextureDiffuseSimple"; public void parse(GameObject go) { //判空就不寫了 Renderer renderer = go.renderer; Material mat = renderer.sharedMaterial; Shader shader = mat.shader; int count = ShaderUtil.GetPropertyCount(shader); for ( int index = 0; index < count; ++index ) { ShaderUtil.ShaderPropertyType type = ShaderUtil.GetPropertyType(shader, index); string propertyName = ShaderUtil.GetPropertyName(shader, index); if ( ShaderUtil.ShaderPropertyType.TexEnv == type ) { Debug.log( "ShaderPropertyName:" + propertyName ); Texture texture = mat.GetTexture(propertyName); Debug.log( "ShaderPropertyName:" + texture.ToString() ); Vector2 textureScale = mat.GetTextureScale(propertyName); Debug.log( "textureScale:" + textureScale.ToString() ); Vector2 textureOffset = mat.GetTextureScale(propertyName); Debug.log( "textureOffset:" + textureOffset.ToString() ); } else if ( ShaderUtil.ShaderPropertyType.Color == type ) { } } }
有些Material確實沒有Color屬性.
選取材質球Shader的時候一定要看是否可以在監視面板中修改顏色屬性.如果可以修改,基本上都可以用renderer.material.color = 顏色; 修改.
等同於 renderer.material.SetColor("_Color",顏色);
有些不能直接通過面板調試賦值修改的,就沒法更改顏色.
有些獲取顏色的時候報錯說找不到"_Color"定義,但是可以在檢視面板中更改材質球顏色,如下圖:
你可以通過renderer.material.SetColor("_TintColor",顏色);來修改.
第一個參數是指定要修改的變量名.根據左下角的TintColor決定應該是什麼字符串.前面加上一個英文下劃線.
用SetColor()函數
具體看官方腳本手冊的Material類
例子是:
function Start () {
//設置glossy著色器以便使用高光顏色
renderer.material.shader = Shader.Find (" Glossy");
//設置高光色為紅色
renderer.material.SetColor ("_SpecColor", Color.red );
}