일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 팁
- File
- 리액트네이티브
- Unity
- 암시적형변환
- 훅
- 코루틴
- >.NET
- oveflow
- 유니티
- C#
- 저장
- stopcoroutine
- 중단
- 마우스
- 키보드
- 리액트
- OnMouseClick
- GetKey
- useEffect
- JSON
- implicit Conversion
- 명시적형변환
- Explicit Conversion
- 클래스
- 불러오기
- Fetch
- 구독
- 오버플로우
- Subscribe
- Today
- Total
목록Game/Unity (6)
Log to grow
유니티 에셋스토어에서 제공하는 Json.NET을 이용하면 클래스 형태의 데이터를 Json 형태로 쉽고 빠르게 저장하고 불러올 수 있다. 아래와 같은 클래스를 파일로 저장하고 불러온다고 해보자. class Human{ public int age = 28; public string name = "John"; public float height = 173.0f; } 1. 멍청한 방법 Json.NET을 이용하는 이점이 없어지는 아주 비효율적인 방법이다. 비효율적인 방법을 소개하는 이유는 내가 꽤 오랫동안 이렇게 잘못된 방법으로 Json을 만들었기 때문이다... 이러한 실수가 궁금하지 않다면 바로 2번으로 넘어가야 한다. 1. Json Object 생성 Human human; // 필드의 값이 입력되었다고 가정 ..
유니티에서 코루틴을 중단할 때 쓰이는 StopCoroutine은 제대로 작동하지 않는 경우가 많다. 그 이유는 StopCoroutine 메서드를 잘못 사용했기 때문이다. StopCoroutine의 인자는 string, IEnumerator, Coroutine 의 세가지 타입을 받을 수 있으며, 어떤 인자를 사용하냐에 따라 그 사용법이 달라진다. 개인적으로 1번 방법은 추천하지 않으며 2번과 3번 중 편한 방법을 선택하는 것을 추천한다. 1. String 첫 번째는 가장 간단하게 String 즉, 코루틴의 이름을 인자로 사용하는 경우이다. StartCoroutine과 StopCoroutine에 각각 코루틴의 이름을 String 형태로 입력하면 된다. void Start() { StartMethod(); }..
유니티 에디터에서 디버깅을 위해 키보드, 마우스로 조작하는 방법에 대해 알아보자. - 기본적으로 매 프레임마다 입력이 있는지 없는지 확인해야 하기 때문에 Update 문 안에 코드를 작성한다. 1. 키보드 # 1. 메서드 - 키보드의 인풋을 받아들이는 메서드는 GetKey, GetKeyDown, GetKeyUp 3가지가 존재한다. - GetKey : 해당하는 키를 누르는 동안 true를 반환한다. 즉, 키를 누르고 있다면 매 프레임마다 if 문이 실행된다. - GetKeyDown : 해당하는 키가 눌릴 때 1회 true를 반환한다. - GetKeyUp : 해당하는 키를 뗄 때 1회 true를 반환한다. # 2. 인자 - 인자는 2가지의 형태로 들어갈 수 있다. 첫 번째는 문자열의 형태("w"), 두 번째..
1. 실행 조건1. Game object와 Script 모두 enable -> Awake, OnEnable, Start 모두 실행 2. Game object는 enable, Script는 disable -> Awake만 실행 3. Game object가 disable -> 모두 실행되지 않음 * Awake와 Start는 최초 1회 실행, OnEnable은 Game object가 active될때마다 실행 2. 실행 순서 Awake -> OnEnable -> Start -> (Update) 순서로 실행
1. 모듈화 (Keep things modular) 1) 시스템간에 직접적인 종속관계가 없도록 한다. - 시스템 간에 Hard reference를 생성하지 않는다.- 시스템을 다른 설정과 관계로 수정하기 어려워짐 2) 씬을 클린 슬레이트로 생성- 씬 간에 임시 데이터가 없도록 한다.- 씬을 히트할 때마다 완전히 중단 후 새롭게 로드되어야 한다.- 씬을 해킹하지 않고도 다른 씬에 없는 고유한 동장이 포함된 씬을 생성할 수 있다. 3) 각 프리팹에 기능을 포함한다.- 가능하면 씬으로 드래그하는 모든 프리팹이 각각의 기능을 포함하도록 한다.- 대부분의 체크인이 프리팹 수준에서 이루어져 씬에서의 충돌이 감소함 4) 각 컴포넌트를 한 가지 문제 해결에 집중적으로 사용한다. 2. 수정 가능성(Editable)1) ..
1. Quaternion과 Euler angle유니티에서 회전을 이해하기 위해선 먼저 Quaternion과 Euler angle을 이해할 필요가 있다. Euler angle은 x,y,z 3 개의 축을 기준으로 0~360도만큼 회전시키는 우리에게 친숙한 좌표계이다. 아래의 그림과 같이 유니티의 Scene View에서 회전툴을 선택했을 때 나타나는 3개의 원이 이 Euler 좌표계에 근거한 표시법이다. 직관적이고 사용하기 편하긴 하지만 Euler angle은 Gimbal lock이라는 문제점이 존재한다. Gimbal lock이란 두 개의 회전축이 겹쳐 특정 방향의 회전이 불가능해지는 것을 말한다. (자세한 설명은 유튜브에...) 따라서, 유니티는 객체의 rotation값을 저장할 때 Quaternion이라는..