상세 컨텐츠

본문 제목

[유니티 소소모임] 1주차. 유니티 기초 (Editor: Luna)

24-25/Untiy

by 롱롱😋 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

관련글 더보기