Question>
UCLASS()는 무엇인가?
-------------------------------------------------------------
Answer>
일단, 공식문서의 UCLASS()에 대한 설명은 아래와 같습니다.
https://docs.unrealengine.com/latest/KOR/Programming/Basics/ClassCreation/CodeOnly/index.html
써진 대로 언급하면, 'UCLASS() 매크로는 엔진이 클래스를 인식할 수 있도록 하며,
키워드 지정자와 함께 사용하여 엔진 내에서의 클래스 작동방식을 설정할 수도 있습니다.'라고 합니다.
그런데, 이거 말고는 다른 설명은 전~~~혀~~~ 없어요.
전~~~혀~~~ ^^;;;;;
그래서, 좀 더 추가로 설명하자면..^^;;;;
UCLASS()는 unreal engine 4에서 사용되는 class의 성격을 설정하기 위한 keyword입니다.
공식 문서 설명대로 macro고요. 설정 방식은 unreal engine 3의 방식과 유사합니다.
참고로 unreal engine 3에서는 아래의 link처럼 class의 성격을 설정했었습니다.
http://udn.epicgames.com/Three/Unreals!cripClassesKR.html
보시다 시피, unreal s!crip로 설정했고요.
unreal s!crip은 epic에서 만든 언어였기 때문에 link의 내용처럼
unreal engine과 유기적으로 연결되는 특별한 설정을 class에 자유롭게 할 수 있었습니다.^^
하지만,
unreal engine 4에서는 unreal s!crip을 사용할 수 없게되었고..^^;;;;;;
그러다 보니, unreal engine에 사용되는 class에 대한 특별한 설정을
C++로 할 수 있는 방법이 필요했습니다. 그래서, 추가된 게 UCLASS()이고요.
앞에서 쓴데로 UCLASSS()를 이용하면,
C++ class에 unreal engine을 위한 특별한 설정을 할 수 있습니다.^^
아래 예는 unreal engine 4에서
class APointLight, APawn, AController를 정의한 부분입니다.
UCLASS(HeaderGroup=Light, ClassGroup=(Lights, PointLights),MinimalAPI, meta=(ChildCanTick))
class APointLight : public ALight
UCLASS(abstract, HeaderGroup=Pawn, config=Game, dependson=AController, BlueprintType, Blueprintable, hidecategories=(Navigation, "AI|Navigation"))
class ENGINE_API APawn : public AActor, public INavAgentInterface
UCLASS(abstract, notplaceable, NotBlueprintable, HideCategories=(Collision,Rendering,"Utilities|Orientation"))
class ENGINE_API AController : public AActor, public INavAgentInterface
제가 위에 걸어 놓은 link와 번갈아 가면서 보시면,
각 class 성격을 대략적으로 파악할 수 있습니다.
물론, link는 unreal engine 3이고,
위의 예는 unreal engine 4라서리, 완전히 파악할 수는 없습니다.^^;;;
하지만, UCLASS()가 역할과 용도에 대한 개념 설명으로는 충분하다고 봅니다.^^
Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS