[置顶] 【Unity3D游戏开发】NGUI之游戏背景Texture采用UV纹理动画 (六)

开发背景

游戏中一些背景能采用UV动画,效果更佳。eg.星空、墙壁

因为gif的原因有卡顿,起始播放纹理动画的时候是不会有卡顿的。
[置顶] 【Unity3D游戏开发】NGUI之游戏背景Texture采用UV纹理动画 (六)_第1张图片

Unity的NGUI采用纹理动画

NGUI的UITexture允许使用一张纹理
[置顶] 【Unity3D游戏开发】NGUI之游戏背景Texture采用UV纹理动画 (六)_第2张图片

有了这个,我们便可以扩展一个脚本来影响【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游戏开发】NGUI之游戏背景Texture采用UV纹理动画 (六)_第3张图片

你可能感兴趣的:(unity,UV,UITexture,UV动画,纹理动画)