【发布时间】:2019-02-22 15:58:18
【问题描述】:
我写了以下脚本:
public class SpriteUV : MonoBehaviour
{
private SpriteRenderer _spriteRenderer;
private Sprite _sprite;
[SerializeField] public Vector2[] _uv = new Vector2 [4]
{
new Vector2(0.4f, 0.5f),
new Vector2(0.6f, 0.5f),
new Vector2(0.4f, 0.35f),
new Vector2(0.6f, 0.35f)
};
void Start ()
{
_spriteRenderer = GetComponent<SpriteRenderer>();
_sprite = _spriteRenderer.sprite;
}
// Update is called once per frame
void Update ()
{
_sprite.uv = _uv;
}
}
但是这有一个错误,它证明Sprite.uv 没有设置器(从the documentation 不明显)如何更改精灵以映射纹理的不同部分?
【问题讨论】:
-
您不能直接更改
uv。来自docs.unity3d.com/ScriptReference/Sprite.OverrideGeometry.html:Sprite UVs are calculated automatically by mapping the provided geometry onto the Sprite texture. -
我可以创建一个可以改变 UV 的材质或类似的东西吗?我是 Unity 新手,但我相信应该有一种正常的方式来做到这一点。
-
需要做的是根据一些输入以编程方式更改 UV。这不是静态设置。
-
渲染我想要的纹理部分:)
-
Here is a workaround using a MeshRenderer on a plane 改为; Here 是一个更复杂的解决方案,包括一个自定义着色器,它可能是你正在尝试的东西.. 没有测试它
标签: c# unity3d sprite uv-mapping