Unity3D 给模型偏移纹理
给模型偏移纹理
using UnityEngine; using System.Collections; [RequireComponent(typeof(Renderer))] public class ModelTextureAnimation : MonoBehaviour { //材质索引 public int MaterialIndex; //材质主纹理名字 public string TextureName = "_MainTex"; //行数 public int Column = 1; //列数 public int Row = 1; //每帧间隔 public float Inverval = 0.333f; //当前帧索引 public int Index = 0; private Renderer mRenderer; private Material mMaterial; // Use this for initialization void Start () { mRenderer = renderer; mMaterial = mRenderer.sharedMaterials[MaterialIndex]; mMaterial.SetTextureScale(TextureName, new Vector2(1.0f / Column, 1.0f / Row)); StartCoroutine(Animate()); } IEnumerator Animate() { SetTextureOffset(); while(true) { yield return new WaitForSeconds(Inverval); if (true == mRenderer.active) { Index++; Index %= (Column * Row); SetTextureOffset(); } } } //根据帧数算出Offset void SetTextureOffset() { float x = (1.0f / Column) * (Index % Column); float y = (1.0f / Row) * (Index / Column); mMaterial.SetTextureOffset(TextureName, new Vector2(x,y)); } // Update is called once per frame #if UNITY_EDITOR void Update () { mMaterial.SetTextureScale(TextureName, new Vector2(1.0f / Column, 1.0f / Row)); } #endif }