본문 바로가기
게임 개발(유니티)/멋쟁이 사자처럼 3기_회고록

[멋쟁이사자처럼 유니티 TIL] 2024_12_30~31 강의 요약 및 정리(4)

by goraku97 2025. 1. 5.

스크립트 특징

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;
}