Unity教程之-Unity3d中游戏背景采用UV纹理动画

 

开发背景

游戏中一些背景能采用UV动画,效果更佳。eg.星空、墙壁,那么本篇文章我们来学习下在Unity3d中游戏背景采用UV纹理动画 ,下面是效果图,

因为gif的原因有卡顿,起始播放纹理动画的时候是不会有卡顿的。
这里写图片描述

Unity的NGUI采用纹理动画

NGUI的UITexture允许使用一张纹理
这里写图片描述

有了这个,我们便可以扩展一个脚本来影响【UV Rect】参数了

贴上代码


/**
基于NGUI的UITexture的纹理动画

1.图片首尾相接的UITexture,可以播放UV纹理动画
2.可以根据定制UV动画方向、速度
3.图片属性: 【Texture Type】:Texture  【Wrap Mode】:Repeat, 图片属性必须基于纹理,不能是Sprite(2D 或 UI)

Added by Teng.
**/
using UnityEngine;
using System.Collections;
public class UVTextureMove : MonoBehaviour
{
// 纹理对象
public UITexture uiTexture;

// 移动速度
public float speedX = 0.1f;
public float speedY = 0.1f;

private float offset_x = 0.0f;
private float offset_y = 0.0f;
private float uv_w = 0;
private float uv_h = 0;

void Start()
{
if (uiTexture == null) {
uiTexture = gameObject.GetComponent<UITexture>();
}

if (uiTexture == null) {
Debug.LogError("UITexture not exist!");
}

uv_w = uiTexture.uvRect.width;
uv_h = uiTexture.uvRect.height;
}

void Update ()
{
offset_x += Time.deltaTime * speedX;
offset_y += Time.deltaTime * speedY;

uiTexture.uvRect = new Rect(offset_x, offset_y, uv_w, uv_h);
}
}

注意细节

  1. UITexture 图片属性: 【Texture Type】:Texture 【Wrap Mode】:Repeat, 图片属性必须基于纹理,不能是Sprite(2D 或 UI)
  2. 纹理要做到首尾相接,否则会巨难看

效果预览

这里写图片描述
这里写图片描述

好了,本篇unity3d教程到此结束,下篇我们再会!