전체 글 (842) 썸네일형 리스트형 Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-36 의존성 주입 이제 가고일 석상을 트리거 박스 내에 두면 비밀문이 작동하도록 해야 한다. 이를 위해서는 우리가 만들었던 컴포넌트인 무버와 트리거 사이를 연결해주어야 할 필요가 있다. 이를 위해 필요한 것이 의존성 주입 기법이며, 다른 오브젝트가 필요하지만 직접 찾을 수 없는 경우에 사용된다. 해당 케이스의 경우에는 트리거 컴포넌트가 어디에서 무버를 찾을 수 있는지 블루프린트가 알려주어야 한다. 따라서 트리거 내에 무버를 세팅하는 함수를 BlueprintCallable로 선언한다. Mover를 사용하기 위해 헤더에 Move.h를 포함해주는 것도 잊으면 안된다. 다음으로 Mover를 세팅하는 함수를 구현해준다. 이때 주의해야 할 것이 인풋 파리미터의 이름과 클래스 변수의 이름이 동일하면 안된다. 만약 동일한 .. [백준 15565번] N과 M (11) (C++) 문제링크 : https://www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = INT_MAX; int N, M, arr[8], result[8]; void func(int cnt) { if(cnt == M) { for(int i=0; i Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-35 얼리 리턴 Tick 함수에 구현한 액터 태그가 붙은 액터를 찾는 기능을 함수로 따로 빼준다. 안에서 값이 변경될 필요가 없으므로 const를 붙여주었다. 여기서 Grabber.cpp 에서 사용한 적이 있던 얼리 리턴을 사용해준다. 해당 함수가 반환하는 값은 액터 포인터이므로, 만약 태그에 붙은 액터가 존재한다면 바로 리턴을 해준다. 하지만 반복문이 모두 마친 후에 액터가 없을 수도 있기에, 이를 위해 기본적으로 리턴은 널포인터를 리턴하도록 해준다. 따라서 기본은 널포인터를 반환하지만, 만약 액터가 있다면 액터를 반환하게 되는 것이다. 이제 간단한 로그메시지로, Tick 함수에서 액터 태그가 붙은 액터가 있다면 Unlocking을, 액터가 없다면 다시 잠기므로 Relocking을 표시해보자. 직전에 만든 .. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-34 액터 태그 우리는 오버랩된 모든 것들을 원하는 것이 아니라, 오직 가고일 석상만을 이용하여 비밀문을 열고 싶다. 이를 위해 사용되는 것이 액터 태그이다. Unlock1이라는 이름을 가진 태그를 만들고, 액터를 순회하면서 해당 태그를 가진 액터에 대해서만 로그을 출력해주도록 해보자. ActorHasTag 함수를 이용하여 우리가 설정한 Unlock1이라는 태그가 있을 때 로그메시지를 출력하도록 하였다. 이번엔 트리거를 여러 곳에 사용할 수 있도록, 트리거에 접근가능한 태그를 만들어보자. 기존의 Unlock1이라는 문자열을 직접 넣어준 것과 달리, 편집가능한 AcceptableActorTag를 만들어주었다. 이는 우리가 만든 트리거 컴포넌트에 존재하며, 언리얼에서 원하는 문자열을 작성하여 원하는 태그로 작성할.. [백준 5568번] 카드 놓기 (C++) 문제링크 : https://www.acmicpc.net/problem/5568 5568번: 카드 놓기 예제 1의 경우 상근이는 11, 12, 21, 112, 121, 122, 212를 만들 수 있다. www.acmicpc.net #include using namespace std; typedef long long ll; typedef pair pii; const int MAX = INT_MAX; int N, K, arr[11]; bool check[11]; setresult; void func(int cnt, string s) { if(cnt == K) { result.insert(stoi(s)); //중복제거 return; } for(int i=0; i> N >> K; for(int i=0; i> ar.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-33 범위 기반 For 반복문 배열 내 모든 값을 순회하는 방식은 상당히 자주 쓰이는 방식이다. 따라서 C++에는 이를 위한 특수한 형태의 반복문 또한 존재한다. 기존 for 문에서 인덱스 변수를 사용한 방식마록, 순회할 배열의 엘리먼트를 가리키는 포인터를 이용하여 순회가 가능하다. 우리가 순회하고자하는 것은 Actors에 대한 내용이므로, AActor* Actor의 값이 필요하며, 순회할 내용으로 Actors를 사용하게 된다. 전에 인덱스를 이용해 값을 가리켰던 것은 간단하게 Actor로 대체된다. 플레이시 기존과 똑같이 작동하는 것을 볼 수 있다. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-32 While 및 For 반복문 저번 강의를 통해 오버랩된 액터들을 얻어 트리거 박스 내에 들어오는 액터의 이름을 출력해주었다. 하지만 플레이어와 가고일 조각상 둘 모두 들어가 있다면 어떻게 될까? 원하는 것은 둘 모두의 이름이 출력되는 것이지만, 실제로는 처음 출력된 한 가지만 계속 출력된다. 이를 고치기 위해 반복문을 사용한다. 반복문은 크게 2가지로 while문과 for문이 존재한다. 먼저 while문의 경우를 살펴보자. 처음 선언한 idx를 기준으로, 해당 값이 액터의 갯수보다 작으면 아래과정을 반복한다. 기존에 액터에 접근하기 위해 Actors[0]을 사용하였지만, 여기서는 idx가 인덱스를 나타내므로 idx를 사용한다. 마지막 줄에 idx를 증가시켜 다음 인덱스를 가리키도록 해준다. 액터의 총 갯.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 4-31 TArray 트리거 박스에는 가고일 석상만 들어갈 수도 있지만, 사람이 실수로 들어갈 수도 있다. 따라서 오버랩된 것이 무엇인지 알 필요가 있으며, GetOverlappingActoros 함수를 통해 이를 알 수 있다. 함수를 살펴보면 TArray를 사용한다. 이는 배열의 일종이며, 사이에 어떤 타입의 값을 저장할지 명시하게 된다. 우리는 오버랩된 액터를 찾기에 AActor*를 작성하게 된다. 그리고 보면 해당 함수는 리턴 ㄱ밧이 없고, 오버랩된 액터에 대해 참조표시가 있는 것을 볼 수 있다. 이를 통해 오버랩된 액터들에 대한 파라미터가 아웃 파라미터인 것을 추정할 수 있다. 두 번째 값에 대해서는 디폴트로 설정되어있으므로 신경쓰지 않아도 된다. 이제 간단하게 오버랩된 액터들을 위해 먼저 TArray를 .. 이전 1 ··· 34 35 36 37 38 39 40 ··· 106 다음