오늘은 팀원분들과 와이어프레임 작성 및 기능 분배를 주로 하였다!
내가 맡은 기능은 벽돌 생성 및 패턴 부여이다
벽돌 생성과 충돌 부분은 어렵지 않게 금방 구현할 수 있었다.
보기엔 이래도 충돌이랑 벽돌 점수 부분은 구현된거다
using UnityEngine;
public class Brick :MonoBehaviour
{
[SerializeField] private int HP;
[SerializeField] private int Score;
private BrickUI brickUI;
private void Awake()
{
brickUI = GetComponent<BrickUI>();
brickUI.UpdateBrickHPTxt(HP);
}
private void GetAttack(int damage)
{
HP -= damage;
if (HP <= 0 )
{
HP = 0;
// TODO :: AddScore(Score) & 오브젝트풀 끄기
}
brickUI.UpdateBrickHPTxt( HP );
}
private void OnCollisionEnter2D(Collision2D collision)
{
// TODO :: 아이템 등을 사용하여 공의 데미지가 늘어났을 때 수정
GetAttack(1);
}
}
그리고 벽돌 패턴을 구현할 때에 오브젝트 풀링을 사용하기 위해 공부하는 시간을 가졌다.
오브젝트 풀링
- 유니티에서 오브젝트를 생성하고 부수는 과정에서 흔히 Instantiate, Destroy를 사용
-> 그러나 이 두 함수는 상당히 비싼 비용이 든다.
- 만약 게임 내에서 지속적으로 Instantiate및 Destroy를 해주면 게임 성능이 많이 떨어지겠지?
그럴 때 사용하는 기법이 오브젝트 풀링이다.
- 자주 사용하는 오브젝트를 미리 생성
사용할 때는 오브젝트풀한테 빌려서 사용
삭제할 때는 오브젝트풀한테 돌려주는 개념이다.
- 즉 단순하게 오브젝트를 활성화 비활성화 만 하는 개념
왜 쓰는게 좋을지 고민해보자
스테이지 별로 생성되는 벽돌이 다르기 때문에 GameScene을 여러 개 만들까도 생각해보았지만,
팀원 분들과 상의해보니 나중에 아이템을 구현할 때나 레벨이 올랐을 때
무작위 위치에서 벽돌이 생성되는 경우가 발생할 수 있겠다라고 생각되었다.
그 때마다 오브젝트를 Instantiate하고 Destroy해주는 것 보다
오브젝트 풀링을 사용하여 무작위 위치에서 벽돌이 생성될 때 그냥 SetActive(True) 해주는 것이
더 효율적인 메모리 사용 방법인 것 같았다.
내일은 오브젝트 풀링을 활용한 맵 생성에 집중해 볼 것이다 !!!
'게임 개발' 카테고리의 다른 글
[Unity] BrickOutGame - 충돌 처리 (0) | 2024.05.20 |
---|---|
[Unity] BrickOutGame - 오브젝트 풀링 (2) (0) | 2024.05.17 |
Text Dungeon - 세나몬 잡기 (5) (0) | 2024.05.07 |
Text Dungeon - 세나몬 잡기 (4) (0) | 2024.05.03 |
Text Dungeon - 세나몬 잡기 (3) (0) | 2024.05.02 |