클론코딩/애니팡
애니팡 클론코딩 (5) - 파괴 시 생성과 정렬, 커스텀 에디터
정주찬
2024. 1. 30. 18:10
파괴 시 생성과 정렬
파괴 시 생성과 정렬
- 이전과 이어서 Queue를 이용하여 다음 타일 파괴
- 파괴된 개수 만큼 생성하고 인덱스를 검사하면서 정렬
- 빈 인덱스에 추가
* 생성과 파괴가 잦으므로 ObjectPooling이 필요
* 주변 타일들도 검사하여 파괴하는 로직 필요
* 정렬 시 자연스럽게 이동하는 로직 필요
// 배열의 크기만큼 세로 줄 당 자리를 채워주게끔 정렬한 뒤
// while문에서 새롭게 타일들을 생성하여 자리에 채워줌
for (int i = 0; i < boardSize; i++)
{
for (int j = 0; j < boardSize; j++)
{
tempIndex.x = j;
tempIndex.y = i;
if (!_board[tempIndex])
{
_nullQueue.Enqueue(tempIndex);
}
else if (_nullQueue.Count > 0)
{
Vector2Int nullIndex = _nullQueue.Dequeue();
// 교환 세팅 로직...
_nullQueue.Enqueue(tempIndex);
}
}
while (_nullQueue.Count > 0)
{
CreateAdditionalTile();
}
_nullQueue.Clear();
}
private void CreateAdditionalTile()
{
Vector2Int nullIndex = _nullQueue.Dequeue();
// 타일 교환, 초기화 로직...
}
타일 초기화
커스텀 에디터를 이용한 타일 초기화
- 테스트 효율성을 위해 버튼으로 타일 초기화
* 초기 세팅에서 연결된 타일을 부시는 로직 필요
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(MainGame))]
public class BoardEditor : Editor
{
private MainGame _board;
private void OnEnable()
{
_board = (MainGame)target;
}
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUILayout.Button("ResetBoard"))
{
_board.InitBoard();
}
}
}