精灵纹理不重复统一

时间:2017-01-04 08:35:58

标签: c# unity3d unity3d-2dtools

我想在Quad上重复纹理但不重复
这是我的代码

    using UnityEngine;
using System.Collections;

public class Track : MonoBehaviour {
    public float speed;
    Vector2 Offset;
    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        Offset = new Vector2 (0, Time.deltaTime * speed);

        GetComponent<Renderer> ().material.mainTextureOffset = Offset;

    }
}

请有人帮忙

1 个答案:

答案 0 :(得分:-1)

将值分配给Offset时出现逻辑问题。 说明如下:

void Update () {
    // Assume that Offset's value is { 2, 3 }
    Offset = new Vector2 (0, Time.deltaTime * speed);
    // Assume Time.DeltaTime's value is 0.12f
    // Assume speed's value is 10
    // Now to figure out the problem ( 0.12f * 10f = 1.2f )
    // Offset's value is now 1.2f
    GetComponent<Renderer> ().material.mainTextureOffset = Offset;
}

正如您现在所看到的,您只是指定每次几乎相同的值。由于Time.DeltaTime将产生帧之间的增量时间(约为0.0016f),因此该值可能只有一点变化。

所以为了说清楚,你不应该依赖Time.DeltaTime,因为它几乎是恒定的价值。首先尝试使用OffsetStart方法初始化您的Awake

void Start() {
    Offset = GetComponent<Renderer>().material.mainTextureOffset;
}

然后在您的Update方法中,您可以增加X值:

void Update() {
    Offset = new Vector2(Offset[0] + (Time.DeltaTime * speed), Offset[1]); 
    GetComponent<Renderer>().material.mainTextureOffset = Offset;
}