我有一个用于高光和轮廓的着色器,它工作得很好,除了一种小但非常烦人的方式:
https://i.stack.imgur.com/vfsNx.png
https://i.stack.imgur.com/N3mG6.png
我的精灵被划分为“玩家”、“头发”、“服装”和“武器”的独立游戏对象,它们都是可交换和动画的。轮廓/填充材质也在其自己的 Gameobject 上,着色器使用“玩家”Sprite Renderer 作为其 _mainTex 并将 Sprite 设置在其自己的 Sprite Renderer 上。
着色器当前使用“头发”(以及最终的“装备”和“武器”)Sprite Renderer 纹理作为着色器图中名为 _Hair 的辅助纹理,以创建头发和身体的复合高亮/轮廓图像。
它工作得很好......除了顶线,而且总是恰好顶线的像素被切断。
我知道这不是精灵表或任何导入设置问题,因为其他着色器在各个部分上工作正常,而且我没有使用精灵图集或任何东西。我认为这一定是我设置着色器图的方式有问题......
https://i.stack.imgur.com/5LZHZ.png
...我从“头发”精灵渲染器访问纹理的方式或我设置纹理的方式:
public class PlayerOutline : EntityOutline
{
public SpriteRenderer outlineRend;
public SpriteRenderer hairRend;
public override void SetSprite()
{
if (hairRend.sprite)
{
outlineRend.material.SetTexture("_Hair",hairRend.sprite.texture);
}
base.SetSprite();
}
}
我已经坚持了两天,所以我非常感谢任何想法,而且我仍然是着色器的初学者;我以前没有将它们用于这样的事情。这也是一个相当困难的标题问题,因此也欢迎任何关于更好标题的建议!