Update() 종류 - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki
-실행 주기
- Update() 메서드는 프레임마다 한 번씩 호출됩니다. 이는 화면이 한 번 그려질 때마다 호출되므로 프레임 레이트에 의존적입니다.
- 주 용도
- 게임의 로직, 입력 처리, 애니메이션 업데이트 등 프레임마다 변경되는 작업을 처리하는 데 사용됩니다.
- 특징
- 프레임 레이트가 높으면 더 자주 호출되고, 낮으면 덜 자주 호출됩니다.
- 물리 연산이 아닌 일반적인 게임 로직을 업데이트하는 데 적합합니다.
void Update()
{
// 입력 처리
if (Input.GetKeyDown(KeyCode.Space))
{
// 점프 로직 등
}
// 게임 로직 업데이트
transform.Translate(Vector3.forward * Time.deltaTime);
}
- 실행 주기
- LateUpdate()는 프레임의 마지막(Update()가 완료)에 호출
- 주 용도
- 캐릭터의 이동이나 물리 연산이 완료된 후 카메라의 위치를 조정
- 객체의 최종 위치를 기반으로 하는 작업 처리
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform target; // 따라갈 타겟 (캐릭터)
public Vector3 offset; // 카메라와 타겟 간의 거리
void LateUpdate()
{
if (target != null)
{
// 카메라의 위치를 타겟의 위치에 맞추어 업데이트
transform.position = target.position + offset;
}
}
}
- 실행 주기
- FixedUpdate() 메서드는 고정된 시간 간격마다 호출됩니다. 이 시간 간격은 Unity의 물리 엔진 업데이트 주기와 일치합니다.
- 주 용도
- 물리 연산, 물리 기반 게임 로직, Rigidbody와 관련된 작업을 처리하는 데 사용됩니다.
- 특징
- 프레임 레이트와 무관하게 일정한 간격으로 호출됩니다.
- 물리 연산이 일정한 시간 간격으로 일어나기 때문에 물리적 안정성을 보장합니다.
- Unity의 기본 고정 시간 스텝은 0.02초(50fps)입니다.
void FixedUpdate()
{
// 물리 연산 업데이트
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.up * 10f);
}
- 실행 주기
- FixedUpdateNetwork()는 네트워크 관련 업데이트를 위해 사용되는 메서드로, 일반적인 Unity API에는 포함되어 있지 않습니다. 이 메서드는 Photon과 같은 네트워크 라이브러리에서 사용될 수 있습니다.
- 주 용도
- 네트워크 상태 업데이트, 네트워크 동기화 등 네트워크 관련 작업을 일정한 간격으로 처리하는 데 사용됩니다.
- 특징
- 주로 멀티플레이어 게임에서 네트워크 상태를 주기적으로 확인하고 동기화하는 데 사용됩니다.
- 네트워크 라이브러리에 따라 고유의 주기를 가질 수 있으며, 일반적인 게임 로직과는 별도로 작동합니다.
void FixedUpdateNetwork()
{
// 네트워크 상태 동기화
// 예시: PhotonNetwork의 네트워크 업데이트 처리
PhotonNetwork.NetworkUpdate();
}
- Update() 프레임마다 한 번 | 게임 로직, 입력 처리, 애니메이션 업데이트 | 프레임 레이트에 의존
- FixedUpdate() 고정된 시간 간격(기본 0.02s) | 물리 연산, Rigidbody 관련 작업 | 일정한 간격으로 호출되어 물리적 안정성
- FixedUpdateNetwork() 네트워크 라이브러리에 따름 | 네트워크 상태 업데이트, 동기화 | 네트워크 관련 작업을 주기적으로 처리