在Unity中的Sprite上滚动纹理以获得背景滚动效果,但不起作用

时间:2018-08-08 14:35:07

标签: c# unity3d

我一直在尝试在2D Unity项目中使用Sprite来实现滚动背景效果。

我已经看到此代码在带有MeshRenderer的3D对象上使用以达到这种效果,但这似乎不适用于带有SpriteRenderer的Sprite。有人知道为什么吗?

public class ScrollingTexture : MonoBehaviour {

  public float ScrollSpeed = -0.5f;
  private Vector2 _savedOffset;
  private Renderer _renderer;

  private void Start ()
  {
      _renderer = GetComponent<Renderer>();
      _savedOffset = _renderer.material.mainTextureOffset;
  }

  private void Update() 
  {
      float x = Mathf.Repeat (Time.time * ScrollSpeed, 1);
      Vector2 offset = new Vector2(x, _savedOffset.y);
      _renderer.material.mainTextureOffset = offset;
  }

  private void OnDisable()
  {
      _renderer.material.mainTextureOffset = _savedOffset;
  }
}

更新: 为了使其正常工作,我按照建议添加了新材质并将其着色器设置为“不亮/透明”。我还必须确保Sprite本身的Wrap Mode设置为Repeat。我尚未修复检查器警告。

1 个答案:

答案 0 :(得分:3)

您在检查器中收到此警告

enter image description here

通过创建一个新材质并将其分配给GameObject,然后将“ Shader”更改为“ Sprites / Diffuse”,我设法使其滚动。