nameID | 属性名称 ID,使用 Shader.PropertyToID 获取。 |
name | 属性名称,例如“_MainTex”。 |
value | 要设置的纹理。 |
element | 指定要设置的渲染纹理中的数据类型的可选参数。 |
设置指定的纹理。
许多着色器使用多个纹理。使用 SetTexture 可更改纹理(由着色器属性名称或唯一的属性名称 ID 标识)。
使用标准着色器对材质设置纹理时应该知道,可能需要使用 EnableKeyword 启用以前未使用的着色器功能。有关更多详细信息,请参阅Accessing Materials via Script。
Unity 内置着色器使用的常用纹理名称:\
"_MainTex"
是主漫射纹理。它还可以通过 mainTexture 属性进行访问。\
"_BumpMap"
是法线贴图。
着色器属性还显示设置材质纹理所需的某些关键字。若要查看此内容,请转到材质,然后右键单击顶部的 Shader 下拉列表。接下来,选取 Select Shader。
通过指定 RenderTextureSubElement,可以指示要设置的渲染纹理中的数据类型。可能的选项为:RenderTextureSubElement.Color、RenderTextureSubElement.Depth、RenderTextureSubElement.Stencil。
另请参阅:mainTexture 属性、GetTexture、Shader.PropertyToID, 着色器程序中的属性、RenderTextureSubElement。
//Attach this script to your GameObject (make sure it has a Renderer component) //Click on the GameObject. Attach your own Textures in the GameObject’s Inspector.
//This script takes your GameObject’s material and changes its Normal Map, Albedo, and Metallic properties to the Textures you attach in the GameObject’s Inspector. This happens when you enter Play Mode
using UnityEngine;
public class Example : MonoBehaviour {
//Set these Textures in the Inspector public Texture m_MainTexture, m_Normal, m_Metal; Renderer m_Renderer;
// Use this for initialization void Start () { //Fetch the Renderer from the GameObject m_Renderer = GetComponent<Renderer> ();
//Make sure to enable the Keywords m_Renderer.material.EnableKeyword ("_NORMALMAP"); m_Renderer.material.EnableKeyword ("_METALLICGLOSSMAP");
//Set the Texture you assign in the Inspector as the main texture (Or Albedo) m_Renderer.material.SetTexture("_MainTex", m_MainTexture); //Set the Normal map using the Texture you assign in the Inspector m_Renderer.material.SetTexture("_BumpMap", m_Normal); //Set the Metallic Texture as a Texture you assign in the Inspector m_Renderer.material.SetTexture ("_MetallicGlossMap", m_Metal); } }