首先,给出圣典的解释:

Material.mainTextureOffset 主纹理偏移量

var mainTextureOffset : Vector2

Description描述

The texture offset of the main texture.

主纹理中的纹理偏移量

The same as using GetTextureOffset or SetTextureOffset with "_MainTex" name.

这个与带有"_MainTex"名称的 GetTextureOffsetSetTextureOffset相同

参考:SetTextureOffset, GetTextureOffset.

 using UnityEngine;
using System.Collections; public class example : MonoBehaviour
{
public float scrollSpeed = 0.5F;
void Update()
{
float offset = - Time.time * scrollSpeed; //这里的Time.time和我例子中 Time.detalTime不一样 但这句话的意思是一样的 都是不断递减的一个数
renderer.material.mainTextureOffset = new Vector2(offset, );
}
}

从上面我们知道,TextureOffset是纹理偏移的意思,通过renderer.material.mainTextureOffset = new Vector2(offset, 0);函数实现Unity中物体材质的偏移,
通过这个函数 可以在游戏中实现背景循环滚动的效果(也可以通过两个相同的背景交替上下实现这个效果,这里不做细讲) 我们知道编程中一个函数体不变的函数,能影响输出结果
的就是函数的参数, 那么这个函数中的参数代表着什么呢?
笔者在Unity中进行试验:
float m_offset;     //物体材质的偏移量

float m_speed= 0.1f;     //物体材质偏移的速度

 void Update ()

{

     m_offset =m_offset  -  m_speed * Time.deltaTime;    //这里物体材质的偏移量 就是 每帧的时间乘以自己定义的速度

     this.GetComponent<Renderer>().material.mainTextureOffset = new Vector2(, m_offset);    //通过这个函数实现物体材质的偏移和滚动

 }

!!!这里注意  材质偏移只有(x,y)两个参数 分别代表材质在横向和纵向的偏移!!!

在上述例子中,
1.我首先把 new Vector2(0, m_offset)中的0改为10000,编译后在Unity中调试 发现物体材质的偏移速度并没有发生改变
2.然后我又把 new Vector2(0, m_offset)中的0和m_offset进行了互换,发现由上下偏移变成了左右偏移,说明常量没有效果 一个每帧都改变的量才能实现函数的偏移
3.我又把 1.步骤中加了一步:把m_offset前面乘以10000,这样就变成了 new Vector2(10000, 10000*m_offset); 然后调试发现 物体材质偏移左右依然岿然不动 然后上下快了好多好多,
这说明函数中的"10000"是有效果的,而且只有在参数是变量的基础上才会发生作用,而且10000变成100000000的话 物体材质偏移的速度会更快 这样,我们对renderer.material.mainTextureOffset = new Vector2(offset, 0);就有一个全面深刻的了解了,以后用到也会更加灵活了.
     
05-11 13:40