강께르의 개발일지
[유니티] 20210929_수업 3일차 본문
오브젝트와 컴포넌트에 대한 이야기
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형을 쓴다.
Color도 Lerp로 이용해 새로운 칼라를 만든다.
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퍼센트)
시드값을 신경 안써도 되는 이유
테이블을 활용해 미리 만들어 놓은 테이블에서 순서대로 값을 가져온다.
그 테이블이 여러 개. 사실상 랜덤이 아닌 것.
갓챠도 테이블 기반으로 한 랜덤 확률을 만든 것.
위는 의사난수에 대한 이야기이다.
일반적인 시드 관리
플레이하는 현재 시간을 시드로 만들어 사용한다.
시드 하나를 가지고 레벨을 생성하는 방법도 있다.
유니티의 랜덤 클래스를 쓰도록 하자.
'프로그래밍 > 유니티' 카테고리의 다른 글
[유니티] 20211005_수업 7일차 (0) | 2021.10.06 |
---|---|
[유니티] 20211006_수업 8일차 (0) | 2021.10.06 |
[유니티] 20211001_수업 5일차 (0) | 2021.10.04 |
[유니티] 20210930_수업 4일차 (0) | 2021.10.01 |
[유니티] 20210927_수업 1일차 (0) | 2021.09.28 |