Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在统一的精灵上滚动纹理以获得背景滚动效果,不起作用_C#_Unity3d - Fatal编程技术网

C# 在统一的精灵上滚动纹理以获得背景滚动效果,不起作用

C# 在统一的精灵上滚动纹理以获得背景滚动效果,不起作用,c#,unity3d,C#,Unity3d,我一直在尝试在2D Unity项目中使用精灵实现滚动背景效果 我见过这段代码在3D对象上使用网格渲染器来实现效果,但在使用SpriteRenderer的Sprite上似乎不起作用。有人知道为什么吗 public class ScrollingTexture : MonoBehaviour { public float ScrollSpeed = -0.5f; private Vector2 _savedOffset; private Renderer _renderer; p

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

我见过这段代码在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;
  }
}
公共类ScrollingTexture:MonoBehavior{
公共浮动速度=-0.5f;
私有向量2_savedOffset;
私有渲染器_渲染器;
私有void开始()
{
_renderer=GetComponent();
_savedOffset=\u renderer.material.mainTextureOffset;
}
私有void更新()
{
float x=数学重复(Time.Time*滚动速度,1);
Vector2偏移=新的Vector2(x,_savedOffset.y);
_renderer.material.mainTextureOffset=偏移量;
}
私有无效不可撤销()
{
_renderer.material.mainTextureOffset=\u savedOffset;
}
}
更新:
为了让它正常工作,我按照建议添加了一种新材质,并将其着色器设置为unlight/Transparent。我还必须确保精灵本身的包裹模式设置为重复。我还没有修复Inspector警告。

您在Inspector中得到此警告


我只需创建一个新材质并将其指定给游戏对象,然后将着色器更改为“精灵/漫反射”,就可以使其滚动。

感谢您的快速回复。我照你说的做了,也让它滚动,但仍然使用相同的代码,这意味着它仍然在检查器中显示警告。当着色器设置为“Sprites/Diffuse”(而不是“Sprites/Default”)时,纹理看起来很暗,但随后纹理不会滚动,而且滚动很奇怪,就像纹理的右侧(1像素宽的线)会重复,直到重新开始。你有没有修改密码?我还是收到了警告。这里的颜色也比较暗,你可以试试其他的材质,例如unlight/Transparent似乎不会影响亮度,我也不会重复。谢谢,我尝试了unlight/Transparent,然后纹理看起来很正常,但我仍然会得到奇怪的1像素宽的重复。