[Unity 마스터 클래스] C# 프로그래밍과 Event Method

시에나 Sienna·2024년 8월 30일
0

1. C# 프로그래밍

1) C# Script

  • GameObject의 각종 명령 제어

  • Game 내 Object들을 생성/삭제 및 관리

  • Game 전체 또는 일부 관리

  • Game의 모든 요소, 기능을 Script로 작성

  • 우리가 실제 만든 Component는 ‘이름 + (Script)’로 표기됨

  • project > C# script 선택하여 생성

  • 생성된 Script 이름을 더블클릭하면 vs code로 이동하여 작성 할 수 있다.

  • 파일 명 수정 및 변경

    • 파일 생성 직후 파일 이름 수정 시 ⇒ Class 이름 자동 변경(파일 이름과 동일)
    • 파일 생성 이후 파일 이름 변경 시 ⇒ Class 이름을 별도 수정해야 함
  • Namespace(이름 공간) : 특정한 규칙으로 묶여 있는 Class, 구조체를 담고 있음

2) Debug.Log() Method

  • 괄호 안에 입력하는 문자열 또는 변수 값을 Console View에 출력하는 Method
  • 여기서 Method란 Scene에 배치되는 하나의 객체를 지정하는 단위
  • Hierarchy View > GameObject 내 Component 적용 방법
    • Hierarchy View에서 빈 GameObject를 생성하여 Script를 드래그
    • 또는 Component를 열어 이동시키거나 add Component로 추가하기
  • Script 파일 이름과 Class 이름이 같아야 함
  • 부모 class로 “MonoBehaviour”를 상속 받아야 함

    조건(삼항) 연산자
    ?: : 조건식의 참, 거짓에 따라 값을 결과값에 대입
    결과 = 조건식?(조건식이 참):(조건식이 거짓);
    ex) int hp = 100, damage = 200;
    hp = hp - damage < 0 ? 0:hp-demage;

2. Event Method

  • Unity세서 개발자 편의를 위해 미리 정의해둔 Event Method
  • 사전에 정의된 순서와 특정 조건을 만족할 때 자동 호출
  • Script(Class) 구성

이벤트 함수의 실행 순서 - Unity 매뉴얼

1) Initialize(초기화)

  1. Awake()

    • 데이터를 초기화 목적의 Event Method
    • Awake() Method가 활성화 상태면 현재 Scene이 실행된 직후 1회 호출
    • GameObject 활성화 상태이면 Component와 상관 없이 호출함

  2. Start()

    • 초기화 목적의 Event Method
    • 첫 번째 프레임 Update가 실행되기 직전에 1회 호출
    • Awake()가 먼저 실행되고 다음에 Start()가 실행
    • GameObject, Component 모두 활성화되어야 호출
  3. OnEnable()

    • Awake(), Start()는 Scene에서 1회 호출시 더 이상 호출되지 않음
    • Component가 비활성화 되었다가 다시 활성화 될 때마다 1회 호출
    • GameObject, Component 모두 활성화되어야 호출

2) Update

  1. Update()
    • 코드를 지속적으로 실행하기 위한 용도
    • 현재 Scene 실행 후 매 프레임마다 호출되는 Event Method
    • GameObject, Component 모두 활성화되어야 호출

  2. LateUpdate()
    • 현재 프레임에서 모든 GameObject의 Update()가 호출된 이후에 호출
    • 서로 다른 Component가 순서에 따라 영향을 줄 경우 사용
    • GameObject, Component 모두 활성화되어야 호출
    • ex) 플레이어가 update(), 그에 따라오는 camera를 LateUpdate()로 설정 할 수 있다.

  3. FixedUpdate()
    • 프레임의 영향을 받지 않고 정해진 횟수만큼 호출
    • 기본값은 0.02,(초당 50회 호출)
    • GameObject, Component 모두 활성화되어야 호출

3) Decommission(해체)

  1. OnDestroy()
    • GameObject가 파괴될 때(GameObject를 삭제 할 때) 1회 호출
    • Scene이 변경되거나 Game이 종료될 때 호출
    • GameObject 활성화 상태이면 Component와 상관 없이 호출함

  2. OnApplicationQuit()
    • Game이 종료될 때 1회 호출
    • 플레이 모드를 중지할 때 호출
    • Scene이 종료 될 때 모든 Object Memory를 삭제하기 때문에 OnDestroy()도 호출 됨
    • GameObject 활성화 상태이면 Component와 상관 없이 호출함

  1. OnDisable()
    • Component가 비활성 될 때 마다 1회 호출
    • 활성화 상태의 Component가 비활성화 되어야 호출되기 때문에 활성/비활성이 필요
    • GameObject, Component 모두 활성화되어야 호출

4) Gizmos(기즈모)

  1. OnDrawGizmos()
    • Scene View에만 출력되는 선, 도형
    • Game 제작 시 눈에 보이지 않는 것을 확인할 때 사용
    • Gizmos Class
      • OnDrawGizmos() Method 내부에서만 동작
      • Color Property에서 설정한 대로 도형 색상 출력
      • GameObject 활성화 상태이면 Component와 상관 없이 호출함


💡 호출되는 경우

Event Method모두 활성화GameObject 활성화 일때만
InitializeStart()
OnEnable()
Awake()
UpdateUpdate()
LateUpdate()
FixedUpdate()
DecommittionOnDisable()OnDestroy()
OnApplicationQuit()
GizmosOnDrawGizmos()

0개의 댓글