网站模板中心 网站推荐,株洲网站建设报价,清远住房和城乡建设部网站,最新的域名1、 如何得到对象使用的材质
获取到对象的渲染器Renderer
Mesh Renderer和Skinned Mesh Renderer都继承Renderer#xff0c;可以用里式替换原则父类获取、装载子类对象
通过渲染器获取到对应材质
可以利用渲染器中的material或者sharedMaterial来获取物体的材质#xff0…1、 如何得到对象使用的材质
获取到对象的渲染器Renderer
Mesh Renderer和Skinned Mesh Renderer都继承Renderer可以用里式替换原则父类获取、装载子类对象
通过渲染器获取到对应材质
可以利用渲染器中的material或者sharedMaterial来获取物体的材质如果存在多个材质可以使用renderer.materials或renderer.sharedMaterials来获取
material和sharedMaterial的区别
material: material属性会返回对象的实例化材质, 相当于它会为对象创建一个该材质的独立副本通过material属性修改材质时这些更改只会影响这个特定对象而不会影响使用相同材质的其他对象使用material会增加内存消耗因为每个对象都有自己独立的材质副本但是可以单独修改单个对象
sharedMaterial: sharedMaterial属性会返回对象的共享材质相当于它返回的是所有使用这个材质的对象共享的同一个材质实例通过sharedMaterial属性修改材质时这些更改会影响所有使用这个材质的对象 使用sharedMaterial不会增加内存消耗但是会批量修改所有使用该材质的对象
//sharedMaterial和material的区别
//sharedMaterial:一个是改一个都变
//material:一个是改一个不会影响其它使用相同材质球的对象
//得到主材质球
material renderer.material;//renderer.sharedMaterial;
//得到所有的材质球
Material[] materials renderer.sharedMaterials; //renderer.materials;
2、如何修改材质属性以及常用方法
颜色材质对象中有color成员用于颜色修改 纹理材质对象中有mainTexture成员用于主纹理修改 通用修改方式材质中有各种Set方法用于修改属性通过传入属性名以及对应值进行赋值 注意属性值以SubShader中声明的属性名为准而不是面板上的显示 修改Shader调用材质中shader属性进行修改利用Shader.Find(Shader名)方法得到对应Shader
// 修改颜色
material.color color;
// 修改主纹理
material.mainTexture Resources.LoadTexture2D(路径);if(material.HasColor(_Color))
{material.SetColor(_Color, color);print(material.GetColor(_Color));
}if(material.HasFloat(_FresnelScale))material.SetFloat(_FresnelScale, fresnelScale);//修改渲染队列
material.renderQueue 2000;// 修改材质球使用的shader
material.shader Shader.Find(Unlit/Lesson80_Fresnel);material.SetTextureOffset(_MainTex, new Vector2(0.5f, 0.5f));
material.SetTextureScale(_MainTex, new Vector2(0.5f, 0.5f));