본문 바로가기

Unity47

코루틴 코루틴: 처리와 처리 사이에 대기 시간 삽입 가능, 여러 처리를 순차적으로 처리하는 것이 아니라 동시에 병렬로 처리할 수 있도록 함 ex. Fade in, out 기능을 구현하고 싶을 때 이렇게 하면 너무 빨라서 서서히 Fade in 처럼 안보임. 이럴 때 해결책은 중간에 대기시간을 넣어주는 것임. 알파값을 빼주고 대기하고 빼주고 대기하는 식으로 구현해야 함! 즉, 코루틴은 대기시간을 삽입할 수 있는 유니티 기능임 (C#에 없는 유니티에만 있는 고유 기능이기 때문에 문법을 신경 쓸 필요는 없음) 코루틴 특징 1: 코드 중간에 대기시간 삽입 가능 A 처리를 하고 yield문을 만난 순간 앵커 박고 명시되어 있는 시간 만큼 코드 밖으로 빠져 나가서 쉬다가 마지막 yield문으로 돌아와서 그 다음 코드 실행... 2021. 7. 13.
UI / 오디오 / 최종빌드 UI를 만들면 자동으로 Canvas와 EventSystem이 생김 EventSystem은 UI 요소들에게 유저 입력(키보드, 마우스, 터치 등)을 받아서 전달해주는 역할을 함. 자동으로 작동하기 때문에 만질 필요 없음 Canvas는 UI 상의 좌표계랑 게임 상의 좌표계랑 다름. 게임 세상 = 3차원, UI = 2차원(사각형 영역의 오버레이로 표시됨) Canvas는 게임 화면과 1:1 대응됨 ( 게임 씬 크기 조정하면 캔버스도 자동으로 조정됨) 게임 세상과 관련 없고 화면 크기와 관련되어있음. Canvas는 UI를 위한 좌표계. 다시 말하면 UI 등의 모든 요소들은 Canvas안에 들어가야 함 Anchor Presets 그냥 누르면 안되고 alt 키 누르면서 마우스로 선택하기 Text size를 키우니 짤.. 2021. 7. 13.
싱글톤 디자인패턴: 프로그래머들 사이에서 공유되는 어떤 코드를 작성하는 방향. 싱글톤: 게임이나 메모리상에 단 하나만 존재, 언제 어디서든 접근 가능한 오브젝트를 만들 때 사용되는 디자인 패턴 예시: Ninja Obj들 중에서 NinjaKing을 찾고 싶을 때 static 변수에 NinjaKing을 만들고 그 안에 Naruto를 넣으면 NinjaKing이 누군지 하나씩 살펴볼 필요 없이 Sakura, Sasuke가 static NinjaKing 변수에 누가 들어있는지 보면 됨 싱글톤은 OO Manager 처럼 단 하나만 존재하고 모든 친구들이 손쉽게 쓸 수 있을 필요가 있는 오브젝트를 만들 때 씀. 예를 들어 몬스터는 여러개 있을 수 있지만 몬스터를 관리해주는 친구는 하나만 있으면 됨. 그러면 그 몬스터 매니저.. 2021. 7. 13.
인스턴스화 인스턴스화: 어떤 대상을 실존하는 무언가로 찍어낸다. 유니티에서 인스턴스화는 미리 만들어진 게임 오브젝트를 실시간으로 게임 도중에 찍어낸다는 의미. (ex. 총알, 몬스터) 보통 인스턴스 할 때 씬 상에 미리 존재하는 게임 오브젝트를 찍어내는게 아니라 게임 오브젝트를 미리 만들어놓고 필요할때마다 쓸 수 있는 프리팹을 사용해서 새로 찍어내게 됨 원하는 위치에 생성시킬 수 있음. GameObject말고 다른 타입으로도 가져올 수 있음. Rigidbody로 가져올 수도 있고 GameObject로 가져오면 따로 GetComponent 해줘야 함. 2021. 7. 12.
회전과 쿼터니언 rotation은 Vector3가 아니라 Quaternion이다! 위 식은 Vector3를 Quaternion으로 변환해주는 것. lookRotation : 해당 방향으로 바라보도록 Rotation 지정 lookRotation을 이용하여 큐브가 sphere를 바라보게 하기 : 목적지에서 시작점을 빼면 시작점에서 목적지로 가는 방향과 거리가 나옴 Lerp: 중간값 구하기 transform.Rotate : 현재 상태에서 Vector안의 값만큼 회전해줌 Quaternion은 Vector3로 값을 뱉어낼 수 있음 Quaternion에 .eulerAngles를 붙이면 vector로 반환해줌 그래서 vector3끼리 값을 더하고 마지막에 Quaternion으로 반환해줄 수 있음 Quaternion끼리 곱하면 값을 .. 2021. 7. 12.
평행이동과 좌표계 + 부모 자식 관계 평행이동을 하고 싶다면? 평행이동은 게임세상의 글로벌 좌표계가 아니라 자기 자신의 로컬 좌표를 기준으로 움직임 글로벌을 기준으로 하고 싶다면 뒤에 Space.World 붙이고 자기 자신으로 하려면 Space.Self Transform에 나오는 좌표는 로컬 스페이스를 기준으로 함. 로컬스페이스는 자기 자신의 부모에 상대적이고 나 자신의 회전에 상대적임. 부모 컴포넌트와 자식 컴포넌트 transform.position과 transform.localPosition transform.position : global 값 수정 transform.localPosition: 인스펙터 창에 보이는 local 값 수정 2021. 7. 12.