파괴 시 생성과 정렬
파괴 시 생성과 정렬
- 이전과 이어서 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();
}
}
}
'클론코딩 > 애니팡' 카테고리의 다른 글
애니팡 클론코딩 (7) - 움직일 때 드래그 제한하기, 순차적인 파괴 가능하도록 하기 (0) | 2024.02.02 |
---|---|
애니팡 클론코딩 (6) - 연속적인 타일이 3개 이상인지 확인하기 (0) | 2024.02.01 |
애니팡 클론코딩 (4) - 실패 이동, 파괴 로직 구현 (0) | 2024.01.25 |
애니팡 클론코딩 (3) - 랜덤 타일, 파괴할 타일 추가 (0) | 2024.01.24 |
애니팡 클론코딩 (2) - 보드 구현 (0) | 2024.01.23 |