我创建了一个pbr着色器图。问题是当我改变材质来使用新的着色器时,角色的纹理也在改变。有什么方法可以让新的着色器保持原来的纹理?
这是一个原始材料的截图,使用与原始着色器的字符。
这是原始纹理。
这是带有脚本的角色网格检查器设置。
这是检查器中新的着色器设置。
这是脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public Shader _shader;
// Start is called before the first frame update
void Start()
{
Store();
}
// Update is called once per frame
void Update()
{
}
private void Store()
{
Texture tex = gameObject.GetComponent<Renderer>().material.GetTexture("_MainTex");
gameObject.GetComponent<Renderer>().material.shader = _shader;
gameObject.GetComponent<Renderer>().material.SetTexture("_MainTex", tex);
}
}
当现在运行游戏时,它改变了新的着色器,但它没有保留原来的纹理。
我试着把脚本中的那行,也就是Store函数中的最后一行改成这样:但是没有什么变化。
gameObject.GetComponent<Renderer>().material.SetTexture("vanguard_diffuse", tex);
这种发光的线条是很好的,这是新的着色器应该做的效果,但我希望它能像第一张截图那样在原始纹理上做。
新的着色器使用pbr和hdr以及其他的东西来使角色慢慢消失,然后再显示出来,边缘有发光的颜色。我不知道怎么用在人物身上,用原来的纹理。
我刚刚做了这个教程,效果很好,但我希望现在能在角色的原始纹理上使用。
你需要从着色器图中的纹理中取样,并使用采样二维节点(我想是这样叫的)。然后你需要将这些节点的输出链接到输出节点的反射率和法线通道。如果你需要对多个纹理进行采样,或者想将你的其他着色器的东西添加到albedo中,你可以将这两个节点一起添加。