C++ 8

언리얼엔진 4 C++강좌 004 [actor-04] 가까이 다가가면 자동으로 불이 켜지는 램프 액터 만들기

가까이 다가가면 자동으로 불이 켜지는 램프 액터를 만들어 봅니다. C++로 램프 액터를 만든 다음 box component를 추가하고 그 box에 뭔가 overlap 되는 이벤트가 발생하면, 그 이벤트를 처리해 램프에 불을 켜는 처리를 해 봅니다. 또한 overlapEnd 이벤트도 처리해 멀어지면 자동으로 불이 꺼지게 만들어 봅니다. 먼저 박스 컴퍼넌트를 추가해 봅니다. // LampActor.h UPROPERTY() UBoxComponent* m_pBox; 그리고 박스에서 발생하는 이벤트를 받기 위해, OnOverlapBegin 이벤트와 OnOverlapEnd 이벤트를 아래와 같이 정의합니다. // LampActor.h UFUNCTION() void OnOverlapBegin(UPrimitiveComp..

언리얼엔진 4 C++강좌 005 [actor-05] C++ 클래스의 재사용성 - 다른 프로젝트에서도 사용 가능할까?

cpp01 프로젝트에서 LampActor 클래스를 만들어 동작하는 것까지 확인했는데, 이 클래스 헤더 파일과 cpp 파일을 복사해서 다른 프로젝트에 추가해 놓으면 똑같이 동작하도록 만들 수 있을까요? 답은 물론 당연하다 입니다. 클래스를 만들어 쓰는 이유 중 하나가 재사용성 때문인데, 클래스 파일 복사해 놓으면 당연히 똑같이 동작해야지요. LampActor 클래스의 재사용성을 확인하기 위해 새로운 프로젝트를 만들고 그 프로젝트에서 LampActor 클래스를 재사용하는 방법을 보여줍니다. 사실 한가지만 신경쓰면 되는데, 헤더 파일에 //LampActor.h UCLASS() class CPP01_API ALampActor : public AActor { "class" 예약어 뒤에 CPP01_API 처럼 기존..

언리얼엔진 4 C++강좌 006 [actor-06] 에디터에서 설정하면 실시간으로 액터에 반영되도록 하기

에디터에서 빛의 세기를 바꾸면 실시간으로 그 값이 클래스의 인스턴스에서 반영되도록 수정해 봅니다. 위 그림과 같이 우리가 만든 클래스에 빛의 세기를 조절하는 변수를 둘 수 있고, 에디터에서 보여줄 수도 있는데, 에디터에서 "빛의 세기" 값을 조절해도 에디트 중에는 그 값이 실시간으로 보여지질 않습니다. 그러니까, "빛의 세기" 값을 바꾸면 에디트 타임에도 반영이 되었으면 하는 것이죠. 이게 언리얼엔진과 c++에서 가능합니다. // LampActor.h virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; 위와 같이 헤더 파일에 PostEditChangeProperty 함수를 선언하고, // Lam..

언리얼엔진 4 C++강좌 001 [actor-01] Actor 클래스 생성해 보기

언리얼엔진 4 c++ 강좌입니다. 첫 번째 시간으로 c++로 Actor 클래스를 만들고 static mesh component를 추가합니다. 그리고 에디터에서 mesh를 바꿔보기도 하고 material도 설정해 봅니다. 그리고 항상 에디터에서 mesh를 바꿔줄 수는 없기 때문에 Actor 클래스 내에서 static mesh를 결정해 주는 방법도 배워봅니다. 먼저 static mesh를 위해 UStaticMeshComponent 컴포넌트를 추가해 줍니다. // MyActor.h파일 UPROPERTY(EditAnywhere) UStaticMeshComponent* pMeshComp; 생성자에 아래와 같이 컴퍼넌트를 생성하고, UStaticMesh를 생성해서 컴퍼넌트에 그 UStaticMesh를 추가해 준다...

XCode (4.2)에서 C++과 Objective-C 를 동시에 쓰기

이 간단한 걸 기억 못해서 어제 종일 끙끙댔다. 그래서 기록을 남겨본다 XCode는 C++ 과 Objective-C 를 동시에 쓸 수 있.. 쓸 수 있을수도 있도록 지원하고 있다. 그래서 나는 중요한 클래스는 그냥 C++ 로 만들고 UI와 관련된 부분만 Objective-C 로 만들려고 생각하고 있다. 그런데, 오랜만에 해보니 이게 잘 안되는거다. 블로그 검색해도 잘 나오질 않고. 방법은 간단하다. 1. C++클래스를 사용하는 Objective-C 파일의 확장자를 .m 에서 .mm 으로 바꿔준다. .cpp 확장자를 .mm으로 바꾸는 게 아니라, .m 파일의 확장자를 .mm으로 바꾸는거다. 이렇게만 해도 되는데, 만약 이래도 안되면, 2. .cpp 파일의 속성을 아래와 같이, "Objective-C++ s..

자바, iOS의 Object 와 id 에 대해

오랜만에 프로그래밍 관련 글을 쓰는군요. 자바의 Object 나 iOS의 id에 대해 궁금해 하시는 분이 계셔서 글을 쓰게 되었습니다. ^^; 자바의 Object에 대해 먼저 설명하겠습니다. Object는 클래스다. 자바의 Object는 클래스입니다. 자바에는 무수히 많은 클래스가 있습니다. 거의 모든 걸 다 클래스로 만들어 놓았죠. 그래서 자바를 만든 제임스 고슬링의 별명이 "Every thing is classes" 라고 합니다. 이 말은 굳이 클래스로 만들지 않아도 될 것을 클래스로 다 만들어서 속도저하를 일으키고 있다는 걸 빗대고 있는 거라 생각되네요. 암튼. 자바에 무수히 많은 클래스가 있는데, 그 클래스들마다 공통으로, 반드시, 꼭 구현되어야 하는 기능들이 있습니다. 자동차를 예를 들어 보죠...

Static이란

출처 : http://kin.naver.com/db/detail.php?d1id=1&dir_id=10104&eid=ukDpNofIvefLjPqW0k5r8h34KOV7Oilf 제 생각에는 static의 기본 정의를 먼저 아셔야 할 듯 합니다. 어떤 대상이 static으로 선언되어 있다면 이것이 의미하는 바는, 이 대상이 메모리상의 어떤 위치에 바인딩되는지 '컴파일타임'에 '정적으로' 바인딩되어 고정된다는 의미입니다. (혹은 링크타임에 되기도 합니다만, 여기서의 논의에서는 섞어서 사용하기로 하죠) 그래서, static으로 선언된 대상이 무엇이든 그것이 메모리의 어느 부분에 대응되는지는 컴파일타임에 결정되어 고졍될 수 있어야 합니다. 1) local static 변수 : 일반적으로 로컬변수는 스택 영역에 생성..

프로그래밍 2007.05.02