본문 바로가기

개발이야기30

언리얼 C++: Lambda와 mutable Lambda의 차이 람다 함수는 기본적으로 상수로 캡처한 변수를 수정할 수 없습니다. 이를 해결하기 위해 mutable 키워드를 사용하여 람다 함수를 변경할 수 있게 만듭니다.람다와 mutable 람다의 차이기본 람다기본적으로 람다 함수는 캡처된 변수를 상수로 취급합니다. 즉, 람다 함수 내에서 캡처된 변수를 수정할 수 없습니다.int x = 0;auto lambda = [x]() { // x++; // 오류: x는 상수로 캡처되었기 때문에 수정할 수 없습니다. std::cout mutable 람다mutable 키워드를 사용하면, 람다 함수 내에서 캡처된 변수를 수정할 수 있습니다. mutable 키워드를 사용하면 캡처된 변수는 상수가 아닌 일반 변수로 취급됩니다.int x = 0;auto lambda = [x].. 2024. 8. 6.
언리얼 C++ to BP: BlueprintNativeEvent 매크로로 C++함수 오버라이드 하기 Unreal Engine에서 C++로 선언된 함수를 블루프린트에서 오버라이드하려면, 함수 선언에 BlueprintNativeEvent 매크로를 사용해야 합니다. 또한, 해당 함수를 virtual로 선언하여 C++에서도 오버라이드할 수 있도록 해야 합니다. BlueprintNativeEvent 매크로는 C++에서 기본 구현을 제공하고, 블루프린트에서 오버라이드할 수 있게 합니다.이렇게 하면 함수의 기본 동작을 C++에서 정의하고, 블루프린트에서 이를 재정의할 수 있습니다. 1. "BlueprintNativeEvent": C++에서 기본 구현을 제공하고, 블루프린트에서 오버라이드할 수 있는 함수 선언에 사용됩니다.2. "_Implementation" 접미사: 함수의 기본 구현을 제공하는 C++ 함수 이름.. 2024. 6. 18.
언리얼 C++: EnhancedInput 시스템이란? 언리얼 엔진 5의 Enhanced Input 시스템은 기존의 입력 시스템(Input System)을 대체하여 보다 유연하고 강력한 입력 처리를 제공합니다. 이 시스템은 다양한 입력 디바이스를 통합 관리하고, 더 복잡한 입력 매핑과 처리 로직을 지원합니다. Enhanced Input의  주요 개념Input Mapping Contexts:입력 맵핑 컨텍스트는 여러 입력 액션(Input Actions)을 그룹화하는 역할을 합니다.특정 상황이나 상태에서 활성화될 수 있으며, 여러 컨텍스트를 겹쳐 사용할 수 있습니다.예를 들어, 걷기 상태와 운전 상태에 따라 다른 입력 맵핑 컨텍스트를 사용할 수 있습니다.Input Actions:입력 액션은 단일 입력 이벤트(키 누르기, 마우스 클릭 등)를 나타냅니다.디지털 입력.. 2024. 6. 18.
언리얼C++: ConstructorHelpers를 사용해 에셋을 로딩해보자 서론 :  컨텐츠 폴더의 에셋을 c++에서 사용하고 싶어언리얼 엔진에서 c++로 클래스를 제작할때 컨텐츠 폴더의 에셋을 지정하는 것이다.블루프린트에서는 스테틱메쉬나 스켈레탈 메쉬와 같은 컴포넌트들을 붙이고 드래그 앤 드롭 하거나 선택해주면 쉽게 에셋을 지정해줄 수 있었다. 하지만 c++은 어떻게 할 수 있을까?? ConstructorHelpers란?언리얼 엔진 5.4에서 ConstructorHelpers 클래스는 주로 C++ 코드에서 객체를 생성할 때 리소스를 찾고 로드하는 데 사용됩니다. ConstructorHelpers는 주로 생성자에서 특정 자산(Asset)을 쉽게 로드할 수 있도록 도와줍니다. 공식 문서를 기반으로 ConstructorHelpers에 대해 자세히 설명하겠습니다.1. FObjectF.. 2024. 6. 18.
unreal VR 패키징 Pico와 Oculus Oculus SDK Platform세팅오큘러스 AndroidStudio Setting은 아래와 같다요큘러스 2의 API레벨은 32였다    pico SDK Platform세팅pico neo 3는 API level이 29였다.거기에 맞는 sdk를 준비해야한다.   오큘러스 NDK 설정 Pico NDK 설정pico의 경우는 공식문서에서 아래와 같이 나와있었다. 지금은  5.3 버전을 사용하고 있기 때문에 25.1.837393 버전을 사용하도록 한다. 오큘러스와 동일한 NDK 이기때문에 크게 문제될 것 같지 않다.  SDK  Command-line Tools도 오큘러스와 같이 11.0버전을 사용한다 따로 만져줄 것 없다. Oculust Unreal Android SDK설정 Pico Unreal 설정  참고문서.. 2024. 6. 5.
Window의 콘솔(Command prompt) 기본 사용법 개발자로서 커맨드 프롬프트는 반드시 친숙해져야만 하는 숙명을 가지고 있다지금부터 기본적인 콘솔창 다루는 법에 대해 배워보자!1. 명령 커맨드 켜기검색창에 cmd를 검색하면  왼쪽 사진 처럼 명령 프롬프트가 보인다. 눌러서 명령프롬프트를 실행시킬 수 있다  2. 기본적인 명령어 사용해보기 프롬프트 창이 열리면 explorer . // explorer ( 탐색기를 열어라) // . ( 지금 위치에서 ) '.'의 의미는 현재위치라는 의미이다 엔터를 치면 현재 위치의 탐색기가 열릴 것이다.  cd .. // cd(이동하라), ..( 이전 경로 )cd 명령어를 이용해 이전 경로로 이동한다  다시 돌아가려면 cd 명령어를 다시치고 community까지 친다음에 tab키를 누르면 자동 완성된다dir // 디렉토리 .. 2024. 6. 3.
통합 개발 환경이란? (IDE) 컴퓨터 산업 초장기에는 프로그래밍이라는 개념 자체가 지금과는 달랐다.아~~~주 어려웠다 반면에 최근에는 IDE라고하는 통합 개발환경이 있기때문에, 프로그래머의 개발환경이 매우 효율적으로 변했다.그리고 그로 인해서 관련 산업들이 아주 빠르게 발전하고 있다. 이렇게 수 있었던 데에는 여러가지 이유가 있겠지만 여기서는 프로그램을 개발하는 할때 사용하는 소프트웨어인 통합 개발 한경이 많이 좋아졌기 때문이라는 것도 무시할 수 없다. 그런 측면에서 몇가지 살펴보자  1. 프로그래머가 할 일 (개발환경 안에서)위 사진을 보면, 프로그래머가 해야할 일이 굉장히 간편해진 것을 알 수 있다. 소스코드를 입력하고 프로그램을 실행한다.원하는 프로그램을 동작하면 사용하면되고 아니면 소스코드를 수정하면된다. 그 외에 작업들은 전.. 2024. 6. 3.
소프트웨어 개발의 7단계 소프트웨어 개발의 7단계1. 목적을 정의한다.무슨일이든 간에 가장먼저 해야할 일은 목적이 무엇인지를 정의하는 것 -프로그램을 개발할때- 내가 만드는 프로그래밍 왜 필요한가?-프로그램이 만들어지는 목적을 달성하기 위해서는 어떤 기능들을 만들어야하는가 명확하고 세세하게 정리하는것이 중요하다   2. 프로그램을 설계한다. - 앞서서 정의한 목적과 기능을 수행하기 위해서는 내 프로그램이 어떻게 만들어져야 하는 지 프로그램을 설계 해야만 한다.  이후에 해야할 일들을 계획해 나아가야만 한다.   3.코드를 작성한다계획한 내용을 실제 프로그래밍 언어로 옮기는 작업을 해야한다. 현대 프로그래밍 언어에서는 일반적인 문서작업과 다를 바 없을 정도로 정말 편해졌다.  대신에 컴퓨터 언어로서 코드를 작성하고 문서를 작성하고.. 2024. 6. 3.
C언어의 탄생과 특징 알렉산더 그레이엄 벨 = 실용적 전화기의 발명가 이 벨이라는 사람이 AT&T라는 거대한 통신사를 세웠다.그리고  이 통신사에서 연구를 하기위해 세운 연구소가 벨 연구소이다. 컴퓨터의 가장 중요한 핵심부품인 '트렌지스터'가 바로 여기에서 발명되었다. 인공지능 빅데이터에서도 굉장히 중요한 정보이론인 샤넨의 정보이론도 여기에서 나왔다. 우리가 공부하는 C언어도 여기에서 창조되었다.   Dennis Ritchie 와 Ken Thompson 이 두사람이 c언어를 만들었다고 한다좋은 친구를 두고 같이 공부하고 같이 성장하는게 그만큼 중요하다. 원래는 Unix라는 운영체제를 공부하는 친구였다고 한다.수많은 운영체제들이 바로 여기에서 나오기 시작했다.  Unix를 원래는 어셈블리 언어로 만들었다. 근데 어셈블리로 모든.. 2024. 6. 3.
컴퓨터의 구조 입력이란 무엇이고 출력이란 무엇일까?   중앙 처리 장치 =  CPU (Central Processing Unit)  계산이 정확하다발열이 심하다그래서 직접적으로 볼 수 있기보다는 냉각장치만 보이게 된다. 컴퓨터를 켤때 fan 돌아가는 소리도 이런 발열 때문이다. 주 기억장치 ( Primary Storage )RAM( Random-Access Memory )컴퓨터의 메모리, 컴퓨터의 부품으로서의 메모리다. 전원을 끄면 데이터가 사라지는 휘발성이다. 휘발성인 대신에 속도가 빠르다. 그래서 보조 기억 장치가 항상 필요하다 .RandomAccess 말 그대로 임의 접근이 가능한 메모리즉, 반대 개념은 순차 접근이다 둘다 기억을 해놓는게 좋다.  그래픽 카드 화면을 출력하는 용도에서 점점발전이 되었다. 초기에는.. 2024. 5. 31.
언리얼 C++: TScriptInterface TScriptInterface란?TScriptInterface는 Unreal Engine에서 인터페이스 기반 프로그래밍을 지원하기 위해 사용되는 템플릿 클래스입니다.이 클래스는 UObject 기반 클래스에서 인터페이스를 구현하고 해당 인터페이스를 참조할 수 있는 기능을 제공합니다. 이를 통해 객체 지향 프로그래밍의 다형성 기능을 활용하고, 블루프린트와 C++ 코드 간의 상호 운용성을 높일 수 있습니다. TScriptInterface를 사용하여 인터페이스를 안전하게 참조하고 호출할 수 있으며, 이는 코드의 유연성과 재사용성을 크게 향상시킵니다.   https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/CoreUObject/UObje.. 2024. 5. 28.
언리얼 C++ : Ensure와 EnsureMsgf란? ensure와 ensureMsgf는 Unreal Engine에서 사용되는 두 가지 중요한 디버깅 매크로입니다. 이 두 매크로는 특정 조건이 false일 때 개발자에게 경고를 보내고 추가 정보를 제공하도록 설계되었습니다. ensure는 기본적인 경고를 제공하며, ensureMsgf는 조건이 충족되지 않을 경우 사용자 정의 메시지를 출력할 수 있습니다.ensureensure 매크로는 조건이 false일 때 경고를 출력하지만, 프로그램 실행을 중단하지 않고 계속해서 실행합니다. 이는 개발자가 코드 실행 중에 발생할 수 있는 잠재적인 문제를 인식하는 데 유용합니다. ensure는 다음과 같이 사용됩니다: 이 경우, Value가 0 이하일 때 ensure는 경고 메시지를 출력하지만, 프로그램은 계속 실행됩니다. .. 2024. 5. 27.
반응형