开发背景
游戏中一些背景能采用UV动画,效果更佳。eg.星空、墙壁
因为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);
}
}
注意细节
- UITexture 图片属性: 【Texture Type】:Texture 【Wrap Mode】:Repeat, 图片属性必须基于纹理,不能是Sprite(2D 或 UI)
- 纹理要做到首尾相接,否则会巨难看
效果预览
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-13 12:17:26