Version: 2021.3
public void SetTexture (string name, Texture value);
public void SetTexture (int nameID, Texture value);
public void SetTexture (string name, RenderTexture value, Rendering.RenderTextureSubElement element);
public void SetTexture (int nameID, RenderTexture value, Rendering.RenderTextureSubElement element);

参数

nameID 属性名称 ID,使用 Shader.PropertyToID 获取。
name 属性名称,例如“_MainTex”。
value 要设置的纹理。
element Optional parameter that specifies the type of data to set from the RenderTexture.

描述

设置指定的纹理。

许多着色器使用多个纹理。使用 SetTexture 可更改纹理(由着色器属性名称或唯一的属性名称 ID 标识)。

使用标准着色器对材质设置纹理时应该知道,可能需要使用 EnableKeyword 启用以前未使用的着色器功能。有关更多详细信息,请参阅Accessing Materials via Script

Unity 内置着色器使用的常用纹理名称:\ "_MainTex" 是主漫射纹理。它还可以通过 mainTexture 属性进行访问。\ "_BumpMap" 是法线贴图。

着色器属性还显示设置材质纹理所需的某些关键字。若要查看此内容,请转到材质,然后右键单击顶部的 Shader 下拉列表。接下来,选取 Select Shader

By specifying a `RenderTextureSubElement`, you can indicate which type of data to set from the RenderTexture. The possible options are: RenderTextureSubElement.Color, RenderTextureSubElement.Depth, and RenderTextureSubElement.Stencil.

另请参阅:mainTexture 属性、GetTextureShader.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); } }