Unity 2D如何实现向下循环滚动的像素游戏背景?
Unity实现向下循环滚动背景的方法
先看你要实现的循环滚动效果:
用到的背景精灵图:
下面是具体实现步骤:
1. 配置背景精灵资源
- 选中你的背景精灵,在Inspector面板里设置:
- Texture Type:设为
Sprite(2D and UI) - Wrap Mode:改为
Repeat(确保纹理可重复平铺) - 调整Pixels Per Unit,和你的游戏像素比例匹配(像素风格游戏常用16或32)
- Texture Type:设为
2. 搭建场景中的背景对象
- 在场景里创建两个Sprite对象,都使用这个背景图,命名为
BackgroundTop和BackgroundBottom - 把两个背景垂直拼接:让
BackgroundBottom的顶部和BackgroundTop的底部完全对齐,确保两个背景总高度能覆盖相机可视区域,且单张背景高度不小于相机可视高度
3. 编写滚动控制脚本
创建C#脚本ScrollingBackground.cs,代码如下:
using UnityEngine; public class ScrollingBackground : MonoBehaviour { public float scrollSpeed = 2f; // 滚动速度,可在Inspector调整 private float spriteWorldHeight; void Start() { // 获取背景精灵在世界空间中的高度 spriteWorldHeight = GetComponent<SpriteRenderer>().bounds.size.y; } void Update() { // 让背景持续向下移动 transform.Translate(Vector2.down * scrollSpeed * Time.deltaTime); // 当背景完全移出相机下方时,将其移到另一个背景的上方,实现循环 if (transform.position.y < -spriteWorldHeight) { transform.position += new Vector3(0, spriteWorldHeight * 2, 0); } } }
- 把这个脚本分别挂到
BackgroundTop和BackgroundBottom上 - 在Inspector里调整
scrollSpeed数值,直到和目标效果匹配
注意事项
- 确保你的相机是正交相机(2D游戏标准配置),如果用透视相机,需要修改背景位置的判断逻辑
- 两个背景的初始位置要对齐精准,避免滚动时出现缝隙,也可以把它们放到同一个父对象下,方便统一管理
内容的提问来源于stack exchange,提问作者Pooria Sadeghy
相关产品推荐
相关产品推荐

