GameDevelop/Unity팀프로젝트

Unity 맵 전환 시 배경전환 기능 추가 & 맨 뒷 배경이 안보이는 문제 트러블슈팅

도도돋치 2025. 7. 16. 20:58
Contents 접기
728x90

 

문제상황

복합 레이어 배경(pxArt_B, pxArt_tree1 등) 구조일 경우, 단순히 스프라이트만 교체하는 것이 아닌 게임 오브젝트를 교체해야한다.

 

비슷한 상황에서 배경이 SceneView에서는 보이지만 Game View에서 안 보이는 문제를 겪었고, 트러블슈팅 과정을 공유해보려고 한다.

 

목표

  • 맵마다 전체 배경 오브젝트를 통째로 교체
  • pxArt_tree1, pxArt_tree2 등 여러 도트 Sprite로 구성된 배경 구조 사용
  • 단순 Sprite 교체 ❌ → 배경 GameObject 프리팹 교체 ⭕️

 

기능구현

1. 맵 프리팹에서 배경 프리팹 분리

 

맵 프리팹 내부에 배경을 넣는 게 아니라, MapComponent에 배경 프리팹만 따로 연결한다.

public class MapComponent : MonoBehaviour
{
    public Transform playerSpawnPoint;
    public PolygonCollider2D cameraBounds;
    public Transform mapRoot;

    public GameObject backgroundPrefab;
}

2. 배경이 따라다닐 Anchor 설정

카메라 아래에 빈 오브젝트 BackgroundAnchor를 만들어서 배경을 여기에 붙여준다.

[SerializeField] private Transform backgroundFollowParent;
private GameObject _currentBackground;

3. MapManager에서 배경 교체 처리

// 기존 배경 제거
if (_currentBackground != null)
    Destroy(_currentBackground);

// 새 배경 생성 및 따라붙이기
if (map.backgroundPrefab != null && backgroundFollowParent != null)
{
    _currentBackground = Instantiate(map.backgroundPrefab, backgroundFollowParent);
    _currentBackground.transform.localPosition = Vector3.zero;
}

👉 ActivateMapRoutine() 메서드 안에, 플레이어 위치 설정한 뒤 넣는 게 좋다.

 

 

해결 전략

트러블슈팅 핵심 체크리스트

체크 항목 설명 해결 방법
Culling Mask 카메라가 해당 배경 레이어를 렌더링하는가? Main Camera > Culling Mask에 배경 레이어 포함되어야 함
Order in Layer Sprite가 가장 뒤에 그려지는가? 배경 레이어의 Order in Layer는 -10 이하 추천
Z 위치 문제 배경 오브젝트가 카메라 뒤에 있는가? Z = 0 이상이면 카메라(Far = 1000)에서 보이지 않을 수 있음
Scene 보기 방식 Scene 뷰에선 보이는데 Game 뷰에선 안 보이는가? Scene 뷰를 3D로 전환해서 실제 Z 깊이 체크

 

위 체크리스트 중 Scene보기 방식 - 3D뷰로 전환한 후, 카메라 뒤로 제일 뒷배경을 옮기는 방법으로 해결했다.

728x90