ヒマがあるならゲームつくってね

こんなとこ見てないでゲームをつくろう

UE4:エディタでプロパティーを変更したときの呼ばれるPostEditChangeProperty について

エディタでプロパティーを変更したときの呼ばれるC++関数PostEditChangeProperty で取得できる
PropertyとMemberPropertyの違いを実際に値を変更して調べてみました。
LocationもRotationもScaleもXを変更した場合はPropertyにはXが返ってくることを期待したのですが、なんか違ってました。
バグかも。



LocationのXを変更した場合

LogTemp: PostEditChangeProperty Property:RelativeLocation MemberProperty:RelativeLocation

RotationのXを変更した場合

LogTemp: PostEditChangeProperty Property:RelativeRotation MemberProperty:RelativeRotation

ScaleのXを変更した場合

LogTemp: PostEditChangeProperty Property:Z MemberProperty:RelativeScale3D
LogTemp: PostEditChangeProperty Property:RelativeScale3D MemberProperty:RelativeScale3D

f:id:siu3:20150531092643p:plain

#if WITH_EDITOR
//エディターで値を変更するとその時呼ばれる
void AMyActor::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent){
	Super::PostEditChangeProperty(PropertyChangedEvent);

	const FName PropertyName = PropertyChangedEvent.Property == nullptr ? NAME_None : PropertyChangedEvent.Property->GetFName();
	const FName MemberPropertyName = PropertyChangedEvent.MemberProperty == nullptr ? NAME_None : PropertyChangedEvent.MemberProperty->GetFName();

	UE_LOG(LogTemp, Log, TEXT("PostEditChangeProperty Property:%s MemberProperty:%s"), *PropertyName.ToString(), *MemberPropertyName.ToString());


}
#endif