nameID | 属性名称 ID,使用 Shader.PropertyToID 获取。 |
name | 属性名称,例如 "_MainTex"。 |
value | 要设置的纹理。 |
element | 可选参数,指定从 RenderTexture 设置的数据类型。 |
设置一个名为的纹理。
许多着色器使用多个纹理。使用 SetTexture 更改纹理(通过着色器属性名称或唯一的属性名称 ID 识别)。
在使用标准着色器设置材质上的纹理时,您应该注意,您可能需要使用 EnableKeyword 来启用之前未使用过的着色器功能。有关更多详细信息,请阅读 通过脚本访问材质。
Unity 内置着色器常用的纹理名称
"_MainTex"
是主要的漫反射纹理。这也可以通过 mainTexture 属性访问。
"_BumpMap"
是法线贴图。
着色器属性还会显示设置材质纹理所需的一些关键字。要查看此内容,请转到您的材质,然后右键单击顶部的 Shader 下拉菜单。接下来,选择 Select Shader。
通过指定 `RenderTextureSubElement`,您可以指示要从 RenderTexture 设置哪种类型的数据。可能的选项包括: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); } }