• [Unreal 게시판] 객체 생성 방법2014.05.16 PM 06:43

게시물 주소 FONT글자 작게하기 글자 키우기

Question>

unreal engine 4에서
C++의 일반적인 생성 방식(new를 이용한 방식)으로 객체를 생성했는데,
unreal engine에서 인지가 안되거나 제대로 처리가 안됨.

제대로 인지되고 처리되는 객체를 만들려면, 어떻게 접근해야 하는가?

-------------------------------------------------------------

Answer>

2가지 방법이 가능합니다.^^


1> UObjet 기반으로 생성하기.
아래 link 참고하시고요.

https://docs.unrealengine.com/latest/KOR/Programming/UnrealArchitecture/Objects/Creation/index.html

link 내용대로 NewObject()이나 ConstructObject()으로 생성할 수 있고요.

smart pointer 개념이 도입되어 있어서,
reference count의 증감이 자동으로 적용됩니다.
참조가 늘어나면, reference count가 높아지고,
참조에서 제외되면, reference count가 낮아집니다.

reference count가 0이면서, 일정 시간이 지나면,
(또는 memory 부족 같은 특정 조건이 발생하면,)
garbage collector가 객체를 파괴합니다.



2> AActor 기반으로 생성하기.
아래 link 참고하시고요.

https://docs.unrealengine.com/latest/KOR/Programming/UnrealArchitecture/Actors/Spawning/index.html

link 내용대로 생성은 SpawnActor()로 하면 됩니다.
link에 없지만, 파괴는 Destroy()로 하면 되고요.

class AActor는 class UObject의 하위 class이기 때문에
'자원 관리의 측면'에서는 같은 개념으로 볼 수도 있지만,
'명시적 파괴'가 가능하다는 특수성 때문에
'기능적인 측면'에서는 같다고 볼 수 없습니다.^^;;;;;;;

참고로
class UObject의 객체는 garbage collector가
객체를 언제 파괴할 지 시점이 명확하지 않아서리..@_@;;;
객체가 파괴될 때 해야할 일을 명확하게 test하기가 힘들다는 단점도 있습니다.

하지만,
class AActor의 객체를 파괴할 때,
파괴 시점에 해야할 일을 명확히 처리되기 때문에,(생성과 파괴시, event가 발생합니다.^^;;;;)
'명시적 파괴'가 필요한 상황이라면,
UObject 기반의 생성과 파괴보다 AActor 기반의 생성과 파괴가 더 좋습니다.^^

다만, actor는 비용 소모가 큰 객체라는 단점은 염두해 두셔야 합니다.



둘 중에 하나를 고르셔서, 접근하시면 됩니다.^^

하시려는 작업의 성격에 맞춰서,
UObject 기반 할 지, 아니면, AActor 기반으로 할 지를
생각해서 결정하시는 게 project에 도움이 된다고 생각합니다~ ^^







Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS
댓글 : 0 개
친구글 비밀글 댓글 쓰기