카테고리 없음

25.02.18(화) - TIL 22일차 Unity 입문

rxo2 2025. 2. 18. 21:14

PlayerPrefs 란 Unity 에서 제공해주는 기능으로 간단한 데이터를 삭제하지 않는한 영구적으로 저장,로드.

일반적으로 설정값이나 작은 크기의 데이터(예: 점수, 옵션 설정 등)를 저장할 때 사용.

운영 체제의 특정 위치에 데이터를 저장하며, 게임을 종료한 뒤에도 유지.

문자열(String), 정수(Integer), 부동소수(Float) 형태의 데이터를 저장.

주의사항 - 암호화되지 않으므로 민감한 데이터(예: 비밀번호, 개인 정보)를 저장하는 데 적합하지 않습니다.

 

 

전처리기 지시문 (#) 컴파일 전에 코드의 일부를 처리하거나 제외하는 명령어,

전처리기는 실제로 코드가 실행되기 전에 컴파일러가 해석하는 명령어.

# 기호로 시작하며, 특정 조건에 따라 코드를 포함하거나 제외가능.

디버깅 및 특정 플랫폼별 코드 관리에 사용. 
#define / #undef → 심볼(symbol) 정의 및 삭제
#if / #elif / #else / #endif → 조건부 컴파일

#region / #endregion → 코드 접기 지원
#pragma warning disable → 특정 경고 메시지 끄기
#error / #warning → 컴파일 중 오류 또는 경고 발생
#if DEBUG → 디버그 모드에서 특정 코드 실행

디버깅, 코드 관리, 플랫폼별 코드 적용 등에 매우 유용한 기능

 

 

[SerializeField] private SpriteRenderer chracterRenderer; // 마지막은 변수임

private 변수는 Unity 인스펙터에서 보이지 않음

[SerializeField] 를 추가하면 private 변수도 유니티 인스펙터에서 보이고 수정 가능

 

SpriteRenderer → 스프라이트를 렌더링하는 컴포넌트

 

 

 

Mathf.Atan2(y, x)는 아크탄젠트 (역탄젠트, inverse tangent) 함수를 사용하여 각도(라디안)를 계산하는 함수 이를 통해 두 점 사이의 방향(각도)을 구할 때 유용합니다. 아래 예시)

 private void Rotate(Vector2 direction)
 {
     float rotZ = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;

      // Mathf.Rad2Deg를 곱하면 각도(degree) 단위로 변환 x, y 값을 받아서 그사이의 세터? 값을 구하는 함수
     bool isLeft = Mathf.Abs(rotZ) > 90f; // 절댓값이 90보다 크면 반대를 본다?

     characterRenderer.flipX = isLeft; // 왼쪽을볼때 이미지x축 기준으로 뒤집는다

     if (weaponPivot != null)
     {
         weaponPivot.rotation = Quaternion.Euler(0, 0, rotZ); // 무기도 같이 회전
     }
 }

    public void ApplyKnockback(Transform other, float power, float duration) // 넉백 적용 메서드
    {
        knockbackDuration = duration;
        knockback = -(other.position - transform.position).normalized * power;
    } // !벡터값! 포지션이 벡터값 위치와 방향(기울기값)이 다나와며 같이 계산 때려버림
    // 괄포앞에-를 주는 이유는 임의의 a 위치에서 나 b의 위치를 뺏을때(공격하여 넉백을 발생시켰을때)
    // 마주 보는 방향에서 반대 방향으로 밀려나게 하기 위해서 사용 + 면 그 방향으로 이동 해버린다

 

 

Mathf.Abs(value)는 주어진 숫자의 절댓값(Absolute Value)을 반환하는 함수
절댓값이란 숫자의 부호(+, -)를 제거하고 항상 양수로 만드는 것을 의미

캐릭터 간의 거리, 물체 간의 거리 비교 등에 유용

float jumpHeight = Mathf.Abs(currentY - previousY);

Mathf.Abs를 사용하면 점프 높이를 항상 양수로 유지

float speed = Mathf.Abs(rb.velocity.x);

Rigidbody의 속도를 계산할 때 방향과 상관없이 속도를 비교 가능