강께르의 개발일지

[유니티] 20210929_수업 3일차 본문

프로그래밍/유니티

[유니티] 20210929_수업 3일차

강께르 2021. 10. 1. 00:55

오브젝트와 컴포넌트에 대한 이야기

 

public으로 선언한 멤버에 대해서 인스펙터에 노출된다.

enum도 가능하다. flags 값도 다 선택할 수 있다.

 

3d 모델링 파일 / 게임 오브젝트

구분해서 차이점은 다음에 알려주실 듯.

 

게임 오브젝트의 태그와 이름을 활용할 수 있다.

Find계 메소드들은 비활성화된 오브젝트들을 찾을 수 없다.

 

컴포넌트 추가하는 방법

드래그-드롭

다른 오브젝트의 컴포넌트를 Copy-Component

-> 복사할 오브젝트에 Paste-Component를 한다.

3. Add Component

 

컴포넌트도 public 변수로 선언할 수 있다.

Transform, Camera

 

같은 오브젝트에서 다른 컴포넌트를 가져와서 쓰기

그냥 private으로 선언하고 getComponent로 가져온다.

 

만약 한 종류의 컴포넌트가 여러개 있다? 배열로 받을 수 있게 만들어서 가져온다.

 

텍스트, csv, font 파일을 asset으로 사용할 수 있어

-> 그냥 프로젝트 폴더에 있는 파일들은 모두 asset이라고 이야기할 수 있다.

 

벡터

중요 벡터로 쓰이고 있냐 점으로 쓰이고 있냐 구분

 

수학적 연산 Mathf 구조체에 모아있다.

float의 비교== 연산자로 하면 정확하지 않기에 Approximately() 메소드를 써서 대강 대소비교를 해야 한다.

 

Color 구조체

유니티 제공 기본 데이터형

색을 결정하는 데이터형 float이다.

 

정수 base 0~255를 생각하고 코딩하면 안된다.

0.0~1.0 값까지 범위가 있다.

 

정수 base를 생각하고 하려면 Color32형을 쓰는데

보통은 Color형을 쓴다.

 

ColorLerp로 이용해 새로운 칼라를 만든다.

 

FadeIn, FadeOut을 구현 가능

 

회전

4원수끼리의 * 연산 == 쿼터니언의 + 연산

벡터와 4원수와의 * 연산 == 벡터의 + 연산

 

컴포넌트를 플레이 중에 추가하고 삭제하기

 

오브젝트를 생성하면서 컴포넌트 추가하는 방법이다.

AddComponent<>();

반환값은 추가한 컴포넌트형

제거는 Destroy(원하는 오브젝트.GetComponent<원하는 컴포넌트>());

 

랜덤 클래스

랜덤값에 대한 클래스

 

Range 메소드

float 두 개 매개변수 : float 반환

int 두 개 매개변수 : int 반환

최소부터 최대까지의 랜덤한 수를 반환

 

회전값, 컬러에 대한 랜덤도 있다.

 

insideUnitCircle

insideUnitSphere

반지름이 1인 원, 구 안에서 벡터를 랜덤하게 반환

 

OnUnitSphere

구의 표면의 한 벡터를 반환

 

Value(시드값 신경 안써)

랜덤한 값 0.0부터 1.0을 반환

랜덤에 대한 퍼센트를 판단

0.2 (20퍼센트) / 0.5 (50퍼센트)

 

시드값을 신경 안써도 되는 이유

테이블을 활용해 미리 만들어 놓은 테이블에서 순서대로 값을 가져온다.

그 테이블이 여러 개. 사실상 랜덤이 아닌 것.

 

갓챠도 테이블 기반으로 한 랜덤 확률을 만든 것.

 

위는 의사난수에 대한 이야기이다.

 

일반적인 시드 관리

플레이하는 현재 시간을 시드로 만들어 사용한다.

시드 하나를 가지고 레벨을 생성하는 방법도 있다.

 

유니티의 랜덤 클래스를 쓰도록 하자.