Unity代码动态修改Shader中图片的Offset值
效果简述
让路面的贴图在Plane上移动,配合人物运动的动画,做出一个3D缩略小窗口的效果。
Shader
下图为Shader,红框中的便是需要操作的属性参数。
代码
public class PlaneMove : MonoBehaviour
{
private Material m_mainMat;
private Vector2 m_start;
void Awake()
{
m_mainMat = GetComponent<MeshRenderer>().material;
}
void Start()
{
m_start = m_mainMat.GetTextureOffset("_MainTex");
}
void Update()
{
m_start += Vector2.right * 0.001f;
m_mainMat.SetTextureOffset("_MainTex", m_start);
}
}
其中:
GetTextureOffset()
是用于获取Offset值。SetTextureOffset()
对Offset进行赋值。- Tiling值同上,使用
GetTextureScale()
和SetTextureScale()
。
关于Tiling和Offset
介绍一下Tiling和Offset的含义:
- Offset:指明使用贴图的起始位置,取值范围为0-1。
- Tiling:指明从Offset位置处的大小区域,区域的取值范围一般为(-1,1),超过的话部分会按比例生成新的区域拼接上原先的。