개발 TIL

내일배움캠프 18일차 TIL 학습내용 정리

yun-wj1126 2025. 2. 17. 21:04

Mathf.PingPong()

특정 값이 일정한 범위를 넘어서면 다시 반대 방향으로 움직이도록 만드는 데 사용

주로 애니메이션, 움직이는 오브젝트의 반복적인 패턴, 제한된 범위 내에서 변수를 변동시킬 때 유용

float Mathf.PingPong(float t, float length)

t: 시간 또는 증가하는 값

length: 값이 반복되는 범위(0 ~ length 사이에서 움직임)

 

이 함수는 t 값이 증가함에 따라 0에서 length까지 증가하다가, 다시 0으로 감소하는 패턴을 반복

 

사용 이유

1. 왕복하는 애니메이션 만들 때

2. 제한된 범위 내에서 값 조정할 때

3. 간단한 시간 기반 움직임 : Time.time을 인자로 넣으면 자연스럽게 시간에 따라 반복적으로 변화하는 값을 얻을 수 있음

 

사용 예시

1. 오브젝트를 좌우로 왕복 이동시키기

2. 색상을 부드럽게 변화시키기

 

결론

Mathf.PingPong()은 값을 특정 범위 내에서 자연스럽게 왕복하게 만들 때 유용한 함수

주로 움직이는 오브젝트, 애니메이션 효과, 색상 변화 등에 많이 사용

if문 없이 깔끔하게 범위 내에서 반복되는 패턴을 구현할 수 있음


Mathf.Abs()

float Mathf.Abs(float value)
int Mathf.Abs(int value)

value: 절댓값을 구할 숫자 (정수 int 또는 실수 float 가능)

 

 

반환값: 입력값의 절댓값 (양수는 그대로, 음수는 양수로 변환)

 

사용 이유

1. 음수를 양수로 변환할 때

2. 차이를 비교할 때

3. 충돌 판정에서 거리 계산할 때

 

사용 예시

1. 플레이어와 적의 거리 차이 구하기

2. 좌우 이동 방향 판별

3. 속도 값이 음수일 경우 양수로 변환

 

결론

Mathf.Abs()는 숫자의 절댓값을 반환하는 함수

거리 계산, 방향 판별, 충돌 판정 등에 유용

음수 값을 양수로 변환할 때도 자주 사용


PlayerPrefs

 

게임 내에서 간단한 데이터를 저장하고 불러올 때 사용되는 Unity의 내장 저장 시스템

주로 설정값, 사용자 진행 데이터, 간단한 카운트 정보 등을 저장하는 데 사용

 

사용 이유

1. 간단한 데이터 저장 & 로드

2. 파일 관리 없이 영구 저장

3. 빠른 접근

4. 멀티 플랫폼 지원

 

PlayerPrefs를 사용하면 안 되는 경우

1. 대량의 데이터 저장 (예: 세이브 파일, 인벤토리, 퀘스트 진행 데이터)

2. 보안이 중요한 데이터 (예: 유저 로그인 정보, 결제 정보)

 

결론

설정값, 간단한 진행 데이터 저장 → PlayerPrefs

대량의 데이터, 민감한 정보 저장 → 다른 방법 필요


 

[SerializeField]

Unity에서 비공개 또는 보호 변수도 인스펙터에서 노출할 수 있도록 해주는 속성

 

사용 이유

1. 캡슐화를 유지하면서 인스펙터에서 조정 가능

2.  코드의 가독성과 유지보수성 향상

3. 객체 직렬화(Serialization) 지원

 

사용 예시

1. 외부 스크립트에서 접근할 필요가 없는 변수지만, 인스펙터에서 값을 조정하고 싶을 때

2. 게임 개발에서 값 조정이 자주 필요한 변수 (예: 체력, 속도, 공격력 등)

3. 보안성을 유지하면서도 에디터에서 편리하게 설정하고 싶을 때

 

결론 

[SerializeField]를 사용하면 코드를 안전하게 보호하면서도 Unity 인스펙터에서 쉽게 조정할 수 있어 가독성과 유지보수성이 향상


Animator.StringToHash()

 

사용 이유

1. 성능 최적화 (문자열 비교 비용 감소)

2. 오타 방지 및 유지보수성 향상

3. 불필요한 메모리 할당 방지

 

결론: 정수 해시값을 사용하면 메모리 관리가 최적화


LayerMask

 

LayerMask는 Unity의 레이어 시스템을 활용하여 특정 레이어와의 충돌 여부를 판별하는 데 사용

충돌 감지(Raycast, Overlap 검사 등) 에 사용

LayerMask를 사용하면 특정 레이어만 감지하거나 무시할 수 있음

 


2D 탑다운 강의를 듣고 하던중 화살이 안보이는 현상이 발생함

이유를 찾아보니 가지고오는 활의 색깔에서 알파의 값이 0인것을 확인... 1로 바꾸니 화살이 정상적으로 나옴