[Unity/기초 공부]

안지은·2022년 9월 18일
0
post-custom-banner

🕒 유니티 오브젝트의 생명주기(LifeCycle)

1. 초기화 영역

Awake 메소드 : 게임 오브젝트가 생성될 때 최초로 실행되는 함수. (초기에 한 번만 실행됨.)

void Awake() {Debug.Log("플레이어 데이터가 준비되었습니다.");}

Start 메소드 : 업데이트 시작 직전에 최초로 실행되는 함수. (한번만 실행됨.)

void Start() {Debug.Log("사냥 장비를 챙겼습니다.");}

2. 활성화 영역

오브젝트가 활성화될 때는 초기화와 물리연산 영역 사이에 위치.

OnEnable 메소드 : 오브젝트가 활성화할 때(Script 킴) 호출되는 함수. 오브젝트를 킬 때(활성화)마다 호출됨.

void OnEnable() {Debug.Log("플레이어가 로그인했습니다.");}

3. 물리연산 영역

FixedUpdate 메소드 : 물리 연산을 수행하기 전에 실행되는 업데이트 함수. 보통 물리 연산과 관련된 로직만 넣음. (여러 번 작동)

void FixedUpdate() {Debug.Log("이동~");}

4. 게임로직 영역

Update 메소드 : 게임 로직 업데이트 함수. 물리 연산과 관련된 로직을 제외한 나머지의 주기적으로 변하는 로직을 넣음.

void Update() {Debug.Log("몬스터 사냥!!");}

LateUpdate 메소드 : 업데이트 영역의 모든 로직들의 실행이 끝난 후 마지막으로 호출되는 함수. (ex) 캐릭터를 따라가는 카메라, 로직의 후처리)

void LateUpdate() {Debug.Log("경험치 획득.");}

5. 비활성화 영역

OnDisable메소드 : 오브젝트가 비활성화될 때(Script 끔) 호출되는 함수.

void OnDisable() {Debug.Log("플레이어가 로그아웃했습니다.");}

6. 해체 영역

OnDestroy 메소드 : 게임 오브젝트가 삭제될 때 실행되는 함수.

void OnDestroy() {Debug.Log("플레이어 데이터가 해체되었습니다.");}

키보드, 마우스 입력 받기

Input : 게입 내 입력(키보드, 마우스)을 관리하는 클래스

void Update() {
	if(Input.anyKeyDown) 
    	Debug.Log("아무 키를 눌렀습니다.");
        
    if(Input.anyKey) 
    	Debug.Log("아무 키를 누르고 있습니다.");
        
    if(Input.GetKeyDown(KeyCode.Return))  //Return은 Enter을 의미 
    	Debug.Log("아이템을 구입하였습니다.");
        
    if(Input.GetKey(KeyCode.LeftArrow))  //꾹 누르고 있을 때
    	Debug.Log("왼쪽으로 이동 중");
        
    if(Input.GetKeyUp(KeyCode.RightArrow))  //꾹 눌렀다가 뗐을 때
    	Debug.Log("오른쪽 이동을 멈추었습니다.");
}

목표지점으로 이동시키기

Vector3가 기본으로 제공하는 4가지 방법.

public class Move : MonoBehaviour
{
    Vector3 target = new Vector3(8, 1.5f, 0);

    void Update()
    {
        /* 1. MoveTowards(현재위치, 목표위치, 속도) : 등속 이동
        transform.position =
            Vector3.MoveTowards(transform.position, target, 1f);
        */

        /* 2. SmoothDamp(현재위치, 목표위치, 참조 속도, 속도) : 부드러운 감속 이동 (속도 적게 줄수록 빠름.)
        Vector3 velo = Vector3.zero;

        transform.position =
            Vector3.SmoothDamp(transform.position, target, ref velo, 1f);
        */
        
        /* 3. Lerp(현재위치, 목표위치, 속도) : 선형 보간. SmoothDamp과 비슷. 마지막 매개변수에 비례하여 속도 증가(최대값 1/ 적게 줄수록 느림.)
        transform.position =
           Vector3.Lerp(transform.position, target, 0.05f);
        */

        /* 4. Slerp(현재위치, 목표위치, 속도) : 구면 선형 보간
        transform.position =
           Vector3.Lerp(transform.position, target, 0.05f);
        */
    }
}
profile
공부 기록용
post-custom-banner

0개의 댓글