2019년 7월 23일 화요일

국비 교육 : 게임 프로그래밍 092일

92일 차 교육 내용 메모를 옮겨 본다.
게임 엔진 유니티에 대한 강의가 진행됐다.


강의는 교재를 이용해 진행됐다.

유니티의 tostring("F2")
- D5 = 00023 : 정수형 5자리
- F2 = xx.xx : 소수점 둘째 자리
- F3 = xx.xxx : 소수점 셋째 자리

유니티는 스크립트를 통해 제어한다.

GameObject.Find("~");
- Find 는 GameObject의 스태틱 함수
- 활성화되어있는 오브젝트만 잡힌다.

게임 오브젝트의 position(벡터)끼리 덧셈, 뺄셈이 가능하다.

GetComponent<~>()를 통해 GameObject의 컴포넌트에 접근한다.
- 단 transform은 객체의 컴포넌트로 제외된다.

스크립트도 컴포넌트를 제어할 수 있다.
C# 스크립트도 컴퍼넌트기에 GetComponent<~>() 을 통해 가져올 수 있다.




gameobject = 나 자신의 오브젝트
- this는 스크립트 나 자신 ㅣ 함수 접근
- gameobject는 게임 오브젝트의 나  |  컴포넌트 접근


Destory( ~ );
- 오브젝트명을 입력해 삭제 할 수 있다.
- 컴포넌트를 입력해 오브젝트에서 컴포넌트를 삭제할 수 있다.


Input
- unit의 입력과 관련된 클래스
- Axis는 설정의 인풋과 같은 것을 의미

Axis : 가속이 있어 0에서 1까지 점차 증가한다.
AxisRaw : 가속 없이 0에서 1로 즉시 변경된다.


Canvas
- UI를 그리는 곳
- UI요소 HUD, Normal UI, 3D UI
- 모든 UI 요소의 부모급이다.

Eventsystem
- 버튼 클릭, 스크롤 등의 입력 이벤트를 체크한다.
- UI 입력 반응에 대한 체크


모든 컴포넌트는 자료형으로 선언 할 수 있다.
- GameObject obj;
- Text txt;

Getcomponent와 find는 부하가 크다
- 요소를 변수로 선언해 두고 불러다 쓰는 것을 추천한다.
- Vector 변수는 구조체 그 외 변수는 포인터다.


기능이 발휘되는 곳에 스크립트를 짜야 한다.
- 총알이 벽에 닿으면 죽는다.
- 죽는 기능을 총알이 가지고 있어야 한다.
- 행위의 주체는 내가 되어야 좋다.

함수를 가지고 있고 외부에서 그 함수를 호출하는 방식으로 구현해라.

3D 캐릭터에 2D 이미지를 띄우기 위해서는 transform에 맞도록 Rect transform 값의 변화가 필요하다.

프리팹 = 사용자 정의 자료형
- GameObject를 만들기 위한 사용자 정의 자료형
- GameObject go = Instantiate(arrowPrefab) as Gameobject;
- as 형 변환으로 (float)num 과 동일한 의미


Input.Getkeydown( ~ ) : 키를 누르는 순간 1회 (push)
Input.Getkey( ~ ) : 키를 누르고 있는 동안 n회 (push 유지)
Input.Getkeyup( ~ ) : 키를 띄는 순간 1회 (up)

Instantiate( ~ ) 는 가장 기본적인 "object 형"을 반환한다.
이를 GameObject형으로 받기 위해서는 as GameObject를 추가하여 형 변환을 해야 한다.


Timer함수

Invoke("함수명" , 시간);
- 시간(초) 뒤에 "함수명"을 실행
- 1회 수행된다.
- 매개변수가 없는 함수만 호출된다.

InvokeRepeating("함수명", 시작 시간, 반복 주기);
- 시작 시간 뒤에 "함수명"을 실행 이후 반복 주기마다 재실행
- 매개변수가 없는 함수만 호출된다.

CancelInvoke를 통해 캔슬 할 수 있다.


코루틴
- 함수다, 싱글 스레드로 작동한다.
- 진입점이 여러 개인 함수로 나갔던 자리에서 다시 들어올 수 있다.

서브루틴
- 모든 기본 함수(메서드)의 의미 입구가 1개, 정문이 1개
- 입구가 1개인 진입점이 1개인 함수(메서드)

반환값이 IEnumerator 로 정해져 있다.
- IEnumerator AddCount()
  {
      yield return null;        ←  반환
  }

Coroutine countFun = Startcoroutine(AddCount());
- 코루틴을 시작 시 동일 형으로 반환된다.

StopCoroutine(countFun);
- 코루틴을 변수로 정지 할 수 있다.


Update() 를 사용하지 말고, 시간 제어를 Invoke와 Coroutine을 잘 사용하면 직관적으로 코드를 구성할 수 있다.



교재를 이용한 강의라서 그런지 3일 차 유니티 교육이지만 많은 내용이 작성되어 있다.
다른 날에 비하면 많은 내용이 작성되어 있는데, 이유는 모르겠다.

댓글 없음:

댓글 쓰기

Unity - Firebase 연동 (Analytics, AdMob)

버전 : firebase_unity_sdk_6.5.0.zip 게임에서 통계 측정 및 광고 추적을 위해 Firebase 을 연동한다. 앞서 [Unity - GPGS 와 Admob 연동 및 배포 준비 작업]  연동 이후에 작업을 진행 한다. 유니...