스크립트 특징
2. TetrisManager
override
- 부모 클래스나 인터페이스에서 이미 정의된 메서드를 자식 클래스에서 다시 구현하고자 할 때 사용
OnAwake()
- 해당 메서드는 주로 Unity 게임 오브젝트의 초기화 작업을 위해 사용
(부모 클래스와 자식 클래스가 모두 초기화 작업을 필요로 할 때)
// OnAwake()는 부모 클래스Singleton<TetrisManager> 에 이미 정의된 메서드이며,
이 메서드를 재정의하는 경우 override 키워드를 반드시 사용해야 함. 그렇지 않으면 컴파일 에러가 발생
== null
- 어떤 값도 참조하고 있지 않거나, 참조형 데이터(예: 배열, 클래스 객체 등)을
초기화되지 시키지 않았는지 확인할 때 사용.
// grid 가 아직 초기화되지 않은 경우,
if (grid == null)
return; // 이 메서드를 종료
// return 사용시, 해당 코드를 포함하고 있는 메서드가 종료
private void OnDrawGizmos()
- 해당 메서드를 사용하면, 씬(Scene) 뷰에 시각적인 디버깅 정보를 그릴 수 있고,
게임 실행 중이 아닌 상태에서도 호출되어 디버깅에 도움을 준다.
Gizmos.DrawSphere((Vector3 center, float radius))
- Unity에서 Gizmos라는 디버깅 도구를 사용해 씬(Scene) 뷰에서 구체(Sphere)를 시각적으로 표시할 때 사용하는 메서드
// 셀의 좌표를 변환하여 화면상의 위치를 설정
// Gizmos.DrawSphere 메서드 : Gizmos.DrawSphere(Vector3 center, float radius)
// center: 구체의 중심 좌표 radius: 구체의 반지름.
// x: 구체의 X(가로) 좌표. y: 구체의 Y(세로) 좌표. 0: Z(깊이) 좌표, 2D 게임에서는 항상 0으로 설정
// x, y는 grid 배열의 셀 위치를 나타내고, X_OFFSET과 Y_OFFSET은 화면의 중앙에 그리드를 배치하기 위해 좌표를 조정하는 오프셋
// 예를 들어, x = 0은 배열의 첫 번째 열을 의미하지만, 이를 월드 좌표로 변환하기 위해 -X_OFFSET을 사용
// 결과적으로, 배열의 좌표를 화면 중심에 맞추는 변환을 수행
// 0.3f (구체의 반지름)
// 배열의 위치: (x, y) = (3, 5) 이면, (3 - 4.5, 5 - 8.5) = (-1.5, -3.5) 가 되어
// 반지름 0.3f 인 구체가 월드 좌표 (-1.5, -3.5, 0)에 그려짐
Gizmos.DrawSphere(new Vector3(x - X_OFFSET, y - Y_OFFSET, 0), 0.3f);
인스턴스 변수와 매개변수를 구별하기 위해 인스턴스 변수 앞에 _(언더스코어)를 붙임
// 인스턴스 변수와 매개변수를 구별하기 위해 인스턴스 변수 앞에 _(언더스코어)를 붙임
// _currentTetrominoData : 현재 조작 중인 테트로미노의 데이터
// Unity에서 오브젝트의 null 상태를 안전하게 확인하기 위해 IsUnityNull 메서드를 사용
if (_currentTetrominoData.IsUnityNull())
.Count( )는 LINQ(언어 통합 쿼리) 메서드이며 , 컬렉션에서 조건을 만족하는 요소의 수를 반환
e => e == 1는 람다 식으로, 각 요소 e에 대해 그 값이 1인 경우만 해당
int count = grid[yIndex].Count(e => e == 1);
// grid[0] = [0, 1, 1, 0, 1]이면, 1이 세 개이므로 count는 3이 됩
" ^"는 C# 8.0 이상에서 도입된 인덱스에서의 역참조(Reverse Index) 연산자
배열 또는 컬렉션에서 끝에서부터 인덱스를 계산할 수 있도록 해줌.
// grid[^1]은 grid 배열의 마지막 요소
// grid.Length가 25일 때, grid[^1]은 grid[24]를 가리키고,
// grid[^1].Length는 grid[24]의 Length를 반환
// grid[^1].Length는 24
// ^는 C# 8.0 이상에서 도입된 인덱스에서의 역참조(Reverse Index) 연산자.
// 이 연산자는 배열 또는 컬렉션에서 끝에서부터 인덱스를 계산할 수 있도록 해줍
for (var i = 0; i < grid[^1].Length; i++)
{
// 마지막 행의 i요소를 0으로 설정
grid[^1][i] = 0;
// 마지막 행의 i번째 요소를 null로 설정하여, 이 위치에 더 이상 블록이 없음을 나타냄.
gridBlock[^1][i] = null;
}
'게임 개발(유니티) > 멋쟁이 사자처럼 3기_회고록' 카테고리의 다른 글
| [멋쟁이사자처럼 유니티 TIL] 2024_12_30~31 강의 요약 및 정리(5) (0) | 2025.01.05 |
|---|---|
| [멋쟁이사자처럼 유니티 TIL] 2024_12_30~31 강의 요약 및 정리(3) (0) | 2025.01.05 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_30~31 강의 요약 및 정리(2) (0) | 2025.01.04 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_30~31 강의 요약 및 정리(1)_(TetrisManager 스크립트 동봉) (0) | 2025.01.03 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_30~31 강의 요약 및 정리(0) (0) | 2025.01.02 |