1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
public:
// 이 액터의 프로퍼티에 기본값을 설정합니다.
AMyActor();
// 매 프레임 호출됩니다.
virtual void Tick( float DeltaSeconds ) override;
protected:
// 게임 시작 또는 스폰시 호출됩니다.
virtual void BeginPlay() override;
}; |
cs |
*클래스 마법사
클래스를 생성하면 클래스 마법사가 BeginPlay()와 Tick()을 오버로딩하는 클래스를 생성한다.
BeginPlay() : 액터가 플레이 가능한 상태로 게임에 들어왔음을 알려주는 이벤트.
게임 플레이 로직을 초기화시키기 좋은 곳.
유니티 - Start()
Tick(): 프레임당 한번씩 호출된다.
유니티 - Update()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
int32 TotalDamage;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Damage")
float DamageTimeInSeconds;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category="Damage")
float DamagePerSecond;
...
}; |
cs |
*프로퍼티가 에디터에 보이도록 만들기
UPROPERTY() : 프로퍼티를 에디터에 노출시키는 전용 매크로
EditAnymore : 에디터에 프로퍼티를 노출시키고 편집도 가능.
VisibleAnywhere: 프로퍼티가 보이기는 하지만 에디터에서 편집은 불가능하게.
BlueprintReadWrite : 블루프린트에서 읽고 쓸수 있도록 만들기 위한 전용 파라미터.
BlueprintREadOnly: 블루프린트에서 const(상수) 취급할때 사용
BlueprintCallable : 블루프린트에서 부를수 있게
_모든 블루프린트 노출 함수는 카테고리를 분류해주어야 정상작동한다.
Transient(휘발성) 디스크에 저장되거나 로드되지않고 지속되지않는 파생값
Category : 유사 프로퍼티와 한 섹션에 나타나도록하는 카테고리 분류기능.
그외 프로퍼티 지정자(프로퍼티 사전) : https://docs.unrealengine.com/latest/KOR/Programming/UnrealArchitecture/Reference/Properties/Specifiers/index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 |
AMyActor::AMyActor()
{
TotalDamage = 200;
DamageTimeInSeconds = 1.f;
}
AMyActor::AMyActor() :
TotalDamage(200),
DamageTimeInSeconds(1.f)
{
}
void AMyActor::PostInitProperties()
{
Super::PostInitProperties();
DamagePerSecond = TotalDamage / DamageTimeInSeconds;
}
#if WITH_EDITOR
void AMyActor::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
CalculateValues();
Super::PostEditChangeProperty(PropertyChangedEvent);
}
#endi |
cs |
*생성자에서 기본값 설정
프로퍼티에 기본값을 지정해 주지 않으면 자동으로 0, 포인터의 경우는 널 포인터로 지정한다.
생성자에서 프로퍼티의 기본값을 설정하는건 전형적인 c++클래스와 동일.
PostInitProperties() 콜 체인에 걸어주는 것으로 디자이너 설정 값을 기반으로 기본값을 만들 수 있다.
PostEditChangeProperty() 언리얼 에디터의 런타임 변경사항은 반영되지 않고,
에디터에서 타겟 오브젝트의 값이 변경되면 알려주는데 이때 필요하다.
에디터 전용 #ifdef 안에 있는데 실행파일 크기를 불필요하게 늘릴수 있는 여타 코드를 제거하기 위함이다.
'프로그래밍 > Unreal' 카테고리의 다른 글
[18]UE4 C++_tutorial 0 (0) | 2017.05.17 |
---|---|
[17]액터 (0) | 2017.05.15 |
[15]Battery Collector_플레이 상태별 spawn volume작동, 플레이어 입력차단, 캐릭터 레그돌효과 (0) | 2017.05.14 |
[14]Battery Collector_player 상태 설정 (0) | 2017.05.13 |
[13]Battery Collector_HUD 블루프린트 만들기 (0) | 2017.05.12 |