Unreal Engine 4 - Gakgu/Gakgu.github.io GitHub Wiki

외부 라이브러리(dll, lib) 등록

MyProject.Build.cs 에 다음과 같이 추가

PublicAdditionalLibraries.Add(@"C:/Program Files/Microsoft SDKs/Kinect\v2.0_1409/Lib\x64/kinect20.lib");

새로운 모듈 추가

Visual Studio

MyProjectName.Build.cs 에서 PublicDependencyModuleNames.AddRange(...) 에 모듈을 추가한다.

Unreal Engien4

파일 - Visual Studio 프로젝트 새로고침

Overlap 이벤트 생성

형식은 primitivecomponent.h 참고

헤더파일

UFUNCTION()
void BeginOverlap(UPrimitiveComponent* OverlappedComponent, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult);

소스파일

MyClass::MyClass()
{
  OnComponentBeginOverlap.AddDynamic(this, &MyClass::BeginOverlap);
}

void MyClass::BeginOverlap(UPrimitiveComponent* OverlappedComponent, class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
{
  // ...
}

Tick()과 Destroy()

안전한 객체의 파괴를 위해서는 Destroy()가 실행된 객체가 Tick()을 실행하는 일이 없어야 한다.

bDestroy = fasle;
DestroyFromTick(){ bDestroy = true; }

void MyClass::Tick(){
  if(bDestroy == true){
    Destroy();
    return;
  }
  // ...
}

Pointer로 된 언리얼 클래스 객체 접근 방법

MyClass* myclass;
MyClass* can_access_myclass = Cast<MyClass>(myclass);

월드 안의 오브젝트 얻기

template<typename FindObjectType>
FORCEINLINE FindObjectType* YOURCLASS::FindObjectName(FString name)
{
  for (TActorIterator<FindObjectType> ActorItr(GetWorld()); ActorItr; ++ActorItr)
  {
    if (ActorItr->GetName() == name)
    {
      return *ActorItr;
    }
  }
  return nullptr;
}

액터의 컴포넌트 얻기

template <typename ClassType>
ClassType* YOURCLASS::GetComponentByActor(AActor* actor)
{
  TArray<ClassType*> Comps;

  actor->GetComponents(Comps);
  if (Comps.Num() > 0)
    return Comps[0];

  return nullptr;
}

메터리얼 알파 채널 사용

블랜드모드 - Masked 알파값을 오파시티 마스크로 연결

⚠️ **GitHub.com Fallback** ⚠️