코딩 공부/Unity C# 썸네일형 리스트형 거꾸로 루프(Backwards for loop) - 리스트에 있는 목록을 제거하려고 할 때 역방향 for루프를 사용할 수 있다 정방향으로 for루프를 실행하는 경우(반례) - 인덱스 0 부터 시작하기 때문에 i 값도 0부터 시작한다- 인덱스 1에 있는 테디를 죽이면 기존 오른쪽에 남아있는 요소들은 왼쪽으로 한 칸 씩 이동한다- 기존 2에 있던 죽어야 할 테디가 1로 이동, 기존 3에 있던 살아있는 테디가 2로 이동- i 값은 순차적으로 1씩 증가하므로 1에 있는 요소(기존 2에 있던 죽은 테디)의 처리를 할 수 없다역방향으로 for루프를 실행하는 경우- 인덱스 3부터 시작하기 때문에 i 값도 리스트의 크기값 3부터 시작한다 - 3에 있는 생존테디를 넘긴 후 2에 있는 죽은테디를 삭제한다- 2에 있는 테디를 삭제하면 오른쪽에 있던 기존 3의 테디가 왼쪽.. 더보기 DLL(Dynamic Link Library) - DLL은 소스 코드를 작성했지만 소스 코드를 제공하고 싶지 않을 때 유용하다 DLL 추가하는 방법- 종속성(Dependencies) - 프로젝트 참조 추가(Add Project Reference) - dll파일으 찾은 후 OK 누르기- dll에 있는 기능을 사용하려면 위와 같은 지시문을 넣어야 한다dll 버전이 내 프로젝트보다 높다면?- 솔루션을 오른쪽 마우스 클릭 후 속성을 누른다- 프레임워크 버전을 임의대로 설정할 수 있다- 가장 좋은 방법은 프로젝트의 프레임워크 버전을 dll의 프레임워크 버전과 일치하게 설정하는 것이다. 더보기 리스트(List) 리스트란?: 크기를 정해야 하는 배열과는 다르게 리스트는 필요에 따라 크기가 늘어날 수 있다\ - List를 사용하려면 네임스페이스가 필요하다. 아래와 같이 지시문을 작성하자.using System.Collections.Generic; - 인덱스 번호 입력할 필요없이 Add를 사용한다.- Resource.Load는 오브젝트를 반환한다기존 Array를 활용했던 코드를 List를 사용하는 코드로 변경해보자 // create deck and hand Deck deck = new Deck(); List hand = new List(); deck.Shuffle(); // add card, flip over, and .. 더보기 배열(Array) - 스크립트에서 게임오브젝트 타입에 요소가 4개인 배열 변수 선언 - 배열 요소의 개수를 4개로 설정하기 위해 상단에 수동으로 '4' 라고 기입한다- 인스턴스화에서 모든 배열에 접근할 수 없으므로 인덱스 숫자를 기입해준다- 정 파일이나 에셋(asset)을 실행 중에 동적으로 메모리에 로드할 수 있도록 한다- Resources.Load는 Unity 프로젝트의 "Resources" 폴더에 저장된 에셋들을 런타임에 불러오는 데 사용한다배열 객체 생성 및 활용 static void Main(string[] args) { // 덱 객체 생성 및 셔플 Deck deck = new Deck(); deck.Shuffle(); // 카드 .. 더보기 while을 사용하여 충돌 없이 스폰 무작위 위치에서 생성되고, 랜덤하게 통통튀는 테디베어 20개 이하로 스폰하는 프로그램- 오브젝트가 너무 많이 스폰돼서 충돌이 되지 않는 장소를 못 찾고, while문의 무한 반복이 발생하는 일을 방지하기 위해 최대 스폰 개수를 20개로 제한한다- 콜라이더의 길이는 Start 메서드에서 한 번 정의하여 전체 코드에서 사용할 수 있도록 한다- 벡터의 최솟값 · 최댓값을 설정하여 특정 스폰 위치가 정해졌을 때 충돌되지 않는지 확인한다- 박스 콜라이더의 길이를 구하기 위한 코드이다.- GetComponent로 컴포넌트를 가져온 후, 길이를 설정한다- 오브젝트는 길이 설정용으로만 사용할 것이기 때문에 바로 파괴한다 - while문에 있는 조건문으로 오브젝트가 있는 위치가 충돌이 없는 곳인지 확인한다- 추후 콜라.. 더보기 키보드로 오브젝트 이동하기 Exercise 더보기문제 1 - 프로젝트 생성 및 스프라이트 추가하기Exercise7이라는 이름의 새 2D Unity 프로젝트를 생성합니다. SampleScene의 이름을 Scene0으로 변경합니다. 새 Sprites 폴더를 추가하고 운영 체제를 사용하여 선택한 스프라이트를 해당 폴더에 복사합니다. 스프라이트를 계층 구조 창으로 드래그하여 씬에 게임 오브젝트를 생성합니다. 게임을 실행하고 아무 일도 일어나지 않는지 확인합니다. 문제 2 - 가로로 드라이브새 스크립트 폴더를 만들고 해당 폴더에 Driver라는 새 C# 스크립트를 만듭니다. Visual Studio에서 새 스크립트를 열고 클래스에 대한 문서 주석을 추가합니다. Driver 클래스(스크립트)는 키보드 입력을 기반으로 게임 오브젝트를 구동합니다.MoveUni.. 더보기 키보드 입력 및 게임패드(Joystick) 처리, 오브젝트 이동 키보드 입력으로 오브젝트 이동시키기- 초당 5 유니티 유닛만큼 이동한다- 키보드는 양수와 음수 입력이 모두 가능하기 때문에 != 0으로 설정한다(마우스는 양수 입력만 있었기에 >0 으로 설정한 것이었다)- Input.getAxis()의 값은 -1~1이므로 네거티브 값과 포지티브 값을 모두 계산할 수 있다- 인풋값 * 초당유닛이동값 * 소요시간 = 이동거리- x축과 y축 동시에 이동을 진행하면 대각선으로 이동할 수 있다(하지만 대각선의 이동 속도가 5의 제곱근 배 더 빠르다. )피타고라스(2+2+1) 게임패드로 오브젝트 이동시키기- 동일한 이름의 축이 여러 개 존재할 수 있다.- 키보드용 horizontal축과 게임패드용 horizontal축이 따로 존재한다.- 스크립트 내에서 해당 액세스를 가져오면 특정.. 더보기 입력 관리자를 활용하여 스폰 및 폭발 더보기문제 1 - 마우스 버튼 프로세서 설정프로젝트 창의 스크립트 폴더에서 마우스 버튼 프로세서 스크립트를 계층 구조 창의 메인 카메라로 드래그합니다. 계층구조 창에서 메인 카메라를 마우스 왼쪽 버튼으로 클릭하여 선택합니다.프로젝트 창에서 프리팹 폴더를 확장하고 폭발 프리팹을 인스펙터의 마우스 버튼 프로세서(스크립트) 컴포넌트에 있는 프리팹 폭발 필드에 끌어다 놓습니다. 테디베어 프리팹을 인스펙터의 마우스 버튼 프로세서(스크립트) 구성 요소에 있는 테디베어 프리팹 필드에 드래그합니다.문제 2 - 마우스 왼쪽 버튼에 테디 베어 스폰입력 관리자를 열고 필요한 경우 축 영역을 확장한 다음 크기 옆의 값에 1을 더합니다. 아래쪽 입력 축(방금 추가한 축)을 확장하고 이름을 SpawnTeddyBear로 변경합니다.. 더보기 이전 1 2 3 4 5 6 7 ··· 9 다음