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

}

  

 

你可能感兴趣的:(unity3d)