[Unity] 在代码中为材质(Material)分配纹理(Texture)时没有更新纹理(Material)。...

查看:306 |回复:3 | 2021-12-20 22:28:57

您需要 登录 才可以下载或查看,没有账号?注册

x
在代码中为材质(Material)分配纹理(Texture)时没有更新纹理(Material)。只有在查看器中打开材质窗口才可以。
2021-12-20 22:28:57  
 赞 赞 0

使用道具 登录

3个回答,把该问题分享到群,邀请大神一起回答。
2#
原因

使用脚本变更 Material(材质)会导致Standard Shader(标准着色器)使用不同的变体。
例如将一个 Normal Map赋值给一个没有Normal Map的材质,或者将 Emissive 等级设为大于零的值,但这个值本身是0时。

解决方案

首先要使用EnableKeyword 函数来启用 Standard Shader变体。如果您使用了材质原本没有使用的着色器特性,您就需要使用不同的着色器变体。
Standard Shader中的特定关键字及其功能如下:
_NORMALMAP (Normal Mapping)
_NORMALMAP (法线映射)
_ALPHATEST_ON (“Cut out” Transparency Rendering Mode)
_ALPHATEST_ON (“裁剪” 透明渲染模式)
_ALPHABLEND_ON (“Fade” Transparency Rendering Mode)
_ALPHABLEND_ON (“凋谢 ” 透明渲染模式)
_ALPHAPREMULTIPLY_ON (“Transparent” Transparency Rendering Mode)
_ALPHAPREMULTIPLY_ON (“透明” 透明渲染模式)
_EMISSION (Emission Colour or Emission Mapping)
_EMISSION (发散颜色或发散映射)
_PARALLAXMAP (Height Mapping)
_PARALLAXMAP (高度映射)
_DETAIL_MULX2 (Secondary “Detail” Maps (Albedo & Normal Map)
_DETAIL_MULX2 (二次“详细信息”地图(反照率和法线贴图)
_METALLICGLOSSMAP (Metallic/Smoothness Mapping in Metallic Workflow)
_METALLICGLOSSMAP (金属工作流中的金属/平滑映射)
_SPECCGLOSSMAP (Specular/Smoothness Mapping in Specular Workflow)
_SPECCGLOSSMAP (镜面工作流中的镜面/平滑映射)

回复 收起回复
2021-12-20 22:29:20   回复
 赞 赞 5

使用道具 登录

3#
感谢楼主自问自答 分享自己知识点  收藏了  点个赞
回复 收起回复
2021-12-22 10:59:05   回复
 赞 赞 2

使用道具 登录

4#
元素是个好家园,加油啊
回复 收起回复
2022-11-3 18:24:29   回复
 赞 赞 1

使用道具 登录

CG 游戏行业专业问题

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表