版本:Unity 6 (6000.0)
语言English
  • C#

Material.SetTexture

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们确实会阅读用户提出的每个建议修改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议修改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

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 可选参数,指定从 RenderTexture 设置的数据类型。

描述

设置一个名为的纹理。

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

在使用标准着色器设置材质上的纹理时,您应该注意,您可能需要使用 EnableKeyword 来启用之前未使用过的着色器功能。有关更多详细信息,请阅读 通过脚本访问材质

Unity 内置着色器常用的纹理名称
"_MainTex" 是主要的漫反射纹理。这也可以通过 mainTexture 属性访问。
"_BumpMap" 是法线贴图。

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

通过指定 `RenderTextureSubElement`,您可以指示要从 RenderTexture 设置哪种类型的数据。可能的选项包括:RenderTextureSubElement.ColorRenderTextureSubElement.DepthRenderTextureSubElement.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); } }