24-25/Untiy
[유니티 소소모임] 1주차. 유니티 기초 (Editor: Luna)
롱롱😋
2024. 10. 4. 12:05
728x90
Unity 게임오브젝트의 흐름
Unity 생명주기
초기화 → [ 물리 → 게임 로직 ] → 해체
↑ ↓
활성화 ← 비활성화
+ 프레임 : 물리 영역 + 게임 로직 영역
초기화 영역
- Awake : 게임 오브젝트 생성할 때 최초 1번만 실행됨
- Start : 업데이트 시작 직전 최초 1번만 실행됨
물리 연산 영역
- FixedUpdate : 물리 연산 업데이트
- 업데이트 함수 : 1초에 여러 번 작동하는 함수
- 고정된 실행 주기를 가지고 있음 -> CPU를 많이 사용
게임 로직 영역
- Update : 게임 로직 업데이트 함수
- 물리 연산 로직을 제외한 주기적으로 변하는 나머지 로직을 넣을 때 사용하는 함수
- 환경에 따라 실행 주기가 떨어질 수 있음
- LateUpdate : 모든 업데이트가 끝난 후 마지막으로 호출
- 주로 카메라에 사용
해체 영역
- OnDestroy : 게임 오브젝트 삭제될 때
- 삭제되기 직전 무언가 남기고 삭제됨
- Awake와 반대
활성화
- OnEnable : 게임 오브젝트가 활성화되었을 때 실행
- 켜고 끌 때마다 실행됨 → 한 번만 실행x
비활성화
- OnDisable : 게임 오브젝트가 비활성화 되었을 때 실행
- 모든 업데이트가 끝난 후 비활성화나 삭제될 때 실행됨
Lerp 함수
: 선형 보간법을 사용하는 함수
+ 선형 보간법 : 직선에 두 점이 주어졌을 때 그 사이에 위치한 값을 추정하기 위하여 직선 거리에 따라 선형적으로 계산하는 방법
Lerp(float a, float b, float t);
- a = 시작값, b = 끝값, t = 그 사이 무수히 많은 값 ( t = 0 => a / t = 1 => b )
public class Lerp : MonoBehaviour
{
Vector3 startPos; // 시작 값 a
Vector3 targetPos = new Vector3 (0, 5, 0); // 끝 값 b
float currentTime = 0; // a와 b 사이를 선형보간하는 t
public float moveTime = 5.0f; // 움직이는 시간
void Start()
{
startPos = transform.position; // 현재 시작 위치를 a에 넣음
}
void Update()
{
currentTime += Time.deltaTime;
// transform.position = Vector3.Lerp (startPos, targetPos, currentTime);
transform.position = Vector3.Lerp (startPos, targetPos, currentTime/moveTime);
}
}
- currentTime이 1초가 되면 목적지( 목표 )에 도달하게 됨
- 이동 시간을 지정하고 싶으면 원하는 값으로 나누기
ex. 5초동안 진행하고 싶은 경우
moveTime을 5로 지정 후 t값을 currentTime/moveTime로 변경
→ 5초가 지난 후에야 currentTime/moveTime이 1이 되며 목적지에 도달하게 됨
- 이동 시간을 지정하고 싶으면 원하는 값으로 나누기
특징
- 목적지를 지정할 수 있음
- 원하는 이동시간으로 설정할 수 있음
출처 : 골드메탈, 유니티 게임오브젝트의 흐름 [유니티 입문 강좌 B5],
게이머TV, inflearn, 4. 유니티가 어려운 초보자를 위한 유니티 기초 강의
Corner Unity
Editor: Luna
728x90