You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中SetTexture()无法设置纹理问题求助

Unity动态设置纹理无效果的排查解决方法

你遇到的_renderer.material.SetTexture("_MainTex", _textureToSet)无效果但无报错的问题,可从以下几个方向逐一排查:

1. 核对材质纹理属性名

打开_materialToSet对应的Shader,确认主纹理的属性名是否为_MainTex:

  • URP/HDRP的默认Lit Shader主纹理属性名为_BaseMap,而非_MainTex;
  • 快速验证:在Material Inspector中,将鼠标悬停在主纹理输入框上,Tooltip会显示准确的属性名称,必须与代码中的字符串完全一致。

2. 检查纹理导入设置

纹理类型错误确实会导致不显示:

  • 将纹理类型设为Texture 2D,纹理形状选择2D;
  • 避免误勾选特殊选项(比如将普通纹理设为Normal Map);
  • 选中纹理文件后,点击Inspector面板的Apply按钮确认设置生效。

3. 确认纹理引用是否正确

  • 在Unity编辑器的脚本组件面板中,检查_textureToSet是否已正确拖入texture.png文件,排查空引用问题;
  • 可在代码中添加调试语句验证:
    Debug.Log(_textureToSet == null ? "纹理为空" : $"当前引用纹理:{_textureToSet.name}");
    

4. 排查材质实例问题

  • 使用_renderer.material会创建原材质的实例副本,若有其他代码修改该实例,可能干扰纹理设置;
  • 可临时改用共享材质测试(注意:此操作会修改原材质文件):
    _renderer.sharedMaterial.SetTexture("_MainTex", _textureToSet);
    
    如果此方式有效,说明实例化后的材质存在其他干扰项,需检查原材质的特殊设置。

5. 验证Shader兼容性

  • 确保材质Shader与项目渲染管线匹配(比如URP项目不要使用内置Standard Shader);
  • 检查Quad的渲染顺序、相机可见性,排除被遮挡或裁切的可能。

调试代码参考

可修改代码增加调试信息,快速定位问题:

private Renderer _renderer;
[SerializeField] Material _materialToSet;
[SerializeField] Texture _textureToSet;

void Start()
{
    _renderer = GetComponent<Renderer>();
    if (_renderer == null || _materialToSet == null || _textureToSet == null)
    {
        Debug.LogError("组件或资源未正确赋值");
        return;
    }

    _renderer.material = _materialToSet;
    
    // 打印材质所有纹理属性名,确认目标属性存在
    var shader = _materialToSet.shader;
    for (int i = 0; i < shader.GetPropertyCount(); i++)
    {
        if (shader.GetPropertyType(i) == ShaderPropertyType.Texture)
        {
            Debug.Log($"纹理属性名:{shader.GetPropertyName(i)}");
        }
    }

    _renderer.material.SetTexture("_MainTex", _textureToSet);
    // 验证设置结果
    var currentTex = _renderer.material.GetTexture("_MainTex");
    Debug.Log($"设置后主纹理:{currentTex?.name ?? "空"}");
}

内容的提问来源于stack exchange,提问作者Andrey Radostny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:35:21