프로그래밍 261

언리얼엔진 4 C++강좌 007 [actor-07] 액터에서 이벤트 발생시키기

내가 만든 actor인 LampActor에 이벤트를 추가합니다. 그리고 레벨 블루프린트와 연결되는 ScriptActor를 만들어서 LampActor에서 발생하는 이벤트를 LevelScript Actor에서 받아 처리하는 방법을 설명합니다. // LampActor.h DECLARE_EVENT(ALampActor, FLightSetEvent) // LampActor.h public: FLightSetEvent& OnLigthSet() { return lightSetEvent; } private: FLightSetEvent lightSetEvent; 램프 액터의 헤더 파일에 위와 같이 이벤트를 선언합니다. // LampActor.cpp lightSetEvent.Broadcast(); 위 코드로 이벤트를 발생시..

언리얼엔진 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++강좌 003 [actor-03] 로그 남기는 방법

언리얼엔진 4에서 c++를 이용해 로그를 남기거나, 화면에 메시지를 보여주는 방법을 배워 봅니다. - UE_LOG 함수로 로그 남기기 - AddOnScreenDebugMessage 함수로 화면에 메시지 보이기 // MyActor.cpp void AMyActor::BeginPlay() { Super::BeginPlay(); UE_LOG(LogBlueprint, Warning, TEXT("in BeginPlay. speed = %f"), speed); GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow, TEXT("in BeginPlay")); } 위와 같이 UE_LOG() 함수를 이용해 로그를 남길 수 있고, GEngine->AddOnScreenDebug..

언리얼엔진 4 C++강좌 002 [actor-02] Actor를 움직여보자

언리얼엔진 4 c++ 강좌입니다. 두번째 시간으로 c++로 만든 actor를 tick() 함수를 이용해 움직여 봅니다. - 엑터가 움직이는 속도를 에디터에서 조절하게 만들기 - 에디터의 카테고리 등에 한글 사용하는 방법 - c++로 만든 함수를 블루프린트에서도 실행하도록 만들기 언리얼엔진 4 c++에서 액터에 움직임을 주려면 Tick() 함수 안에 움직임을 적어주면 됩니다. // MyActor.cpp void AMyActor::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector newLocation = GetActorLocation(); newLocation.Y += speed; SetActorLocation(newLocation); } 위와 같이 Tick..

언리얼엔진 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를 추가해 준다...

언리얼엔진 4 C++ 강의를 시작합니다.

언리얼엔진4 c++ 강의를 시작합니다. 대상: 언리얼엔진을 blueprint로는 사용하실 수 있어야 합니다. 언리얼엔진을 따로 알려드리지 않습니다. 또 C++에 대해서도 따로 알려드리지 않으니 C++도 하셔야 합니다. 그렇다고 제가 초보자를 위한 강의를 멈춘 건 아닙니다. 지금 계속 초보자를 위한 강의(블루프린트 버전)을 준비 중 입니다.

xamarin 강좌 020. Custom Native Control 만들기(4) - Native Control의 event를 xaml 파일까지 넘기기

xamarin 20번째, xamarin에서 Custom Native Control 만들기 4번째 시간으로, native control에서 발생시킨 event를 renderer가 받고, 그걸 다시 view가 받고, 그 이벤트를 다시 xaml 파일에서 쓸 수 있도록 하는 과정을 설명합니다. 여기까지 하시면 우리가 원했던, xaml 파일에서 native control에 속성값을 전달하고, native control에서 발생한 event를 .xaml.cs 파일에서 처리할 수 있게 됩니다. 그래서 드디어 우리가 만든 콘트롤을 와 같은 식으로 xaml 파일에서 사용할 수 있게 됩니다. 관련 강의: youtu.be/3Ahb92W7jRE

xamarin 강좌 019. Custom Native Control 만들기(3) - xaml 파일에서 속성값을 native control로 전달하기

xamarin 19번째, xamarin에서 Custom Native Control 만들기 3번째 시간으로, xamarin의 공통영역의 xaml 파일에서 속성값을 native control로 전달하는 방법을 설명합니다. xaml 파일에서 속성값을 정하면 그 값으로 초기화하겠다는 뜻이죠. 그렇게 값을 초기화할 때 제대로 값이 넘어가는 방법을 알아봅니다. OnElementChanged() OnElementPropertyChanged() renderer에서 위 두 함수를 override 해서 사용해 xaml 파일에서 설정한 값을 native control로 전달합니다.