[Unity] Stage BG Manager 만들기

Min·2024년 7월 30일

Project일지

목록 보기
6/8
post-thumbnail

Stage BG Manager 구현

Stage BG Manager는 매우 간단하다. 현재 스테이지가 몇 스테이지인지 입력받으면 그 스테이지에 맞는 맵 배경을 띄우는 역할을 한다. 매우 간단해서 그냥 Stage Manager에서 구현해도 되는 기능이지만, StageManager가 GameObject를 인스턴스화하고 상호작용하는 기능을 만들어보고 싶었기에, 간단한 게임오브젝트를 구현하는 것으로 학습해보았다.

Prefab과 Instance

  • StageManager의 멤버변수다


    Prefab은 에디터에서 정의한 클래스, Inst는 실제 인스턴스화가 된 객체를 의미한다. 위에 [SerializeField]는 바로 아래줄에 있는 private 멤버 변수인 StageBGManagerPrefab을 에디터에서 접근 및 설정할 수 있게 해주는 역할을 한다.
    요약하자면, StageBGManagerPrefab을 에디터에서 입력한 후, StageBGManagerPrefab을 Instantiate한 것을 StageBGManagerInst에 넣을 것이다.

사용 예

  1. Stage BG Manager Script를 만들고, 스크립트를 빈 Prefab에 만들어 붙인다. 이렇게하면 Stage BG Manager Script를 컴포넌트로 붙이고 있는 GameObject를 정의한것이다.


  2. SerializeField를 사용했으니 StageBGManagerPrefab을 설정할 수 있는 칸이 StageManager오브젝트에 있을 것이다. 해당 칸에 방금 만든 프리팹을 넣으면 된다.

  3. 마지막으로 해당 프리팹을 인스턴스화 하기 위해 Instantiate함수를 사용한다

Stage BG Manager Script 구현

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

public class SC_StageBG : MonoBehaviour
{
    private void Awake()
    {
        BGRenderer = gameObject.AddComponent<SpriteRenderer>();
        BGRenderer.sortingOrder = 0;

        BGSprite.Add(Resources.Load<Sprite>("StageScene/StageBg/Stage_1"));
        BGSprite.Add(Resources.Load<Sprite>("StageScene/StageBg/Stage_2"));
        BGSprite.Add(Resources.Load<Sprite>("StageScene/StageBg/Stage_3"));
        BGSprite.Add(Resources.Load<Sprite>("StageScene/StageBg/Stage_4"));
        BGSprite.Add(Resources.Load<Sprite>("StageScene/StageBg/Stage_5"));
        BGSprite.Add(Resources.Load<Sprite>("StageScene/StageBg/Stage_6"));
    }

    public void SetStageBG(int CurStage)
    {
        BGRenderer.sprite = BGSprite[CurStage];
    }

    private List<Sprite> BGSprite = new List<Sprite>();
    private SpriteRenderer BGRenderer;
}

Stage Manager 내부에서의 BG 인터페이스

    private void SetStageBG(int CurStage)
    {
        StageBGManagerInst.GetComponent<SC_StageBG>().SetStageBG(CurStage);
    }

후기

프리팹과 인스턴스는 잘 구분해서 사용합시다(애초에 알고 사용한다면 헷갈릴 일이 없긴 하다.) 모든 리소스는 꼭 Asset/Resources폴더에서 관리합시다. (자세한건 Resources 클래스에 대해서 알아보세요...)

profile
티내는 청년

0개의 댓글