추가한 멤버변수의 변경을 위해 매번 컴파일 하는 작업은 비효율적이다. 많은 작업은 블루프린트나 언리얼의 뷰포트에서 진행 될 것이다. 또한 시나리오 작업하는 사람이 C++의 코드를 수정하는 방법을 모를 수도 있다. 이를 위해 추가한 변수를 블루프린트, 뷰포트에서 변경할수 있도록 변수를 노출 시킬 것이다.

 

Item.h

private:
	float RunningTime;

	UPROPERTY(EditDefaultsOnly)
	float Amplitude = 0.5f;
	
	UPROPERTY(EditInstanceOnly)
	float TimeConstant = 5.f;
};

 

EditDefaultOnly는 블루프린트에 표기가 되며 모든 인스턴스들이 공유하기 때문에 전부 같은 값을 적용받는다.

우측에 Amplitude 값이 보인다.

Aplitude가 0.3으로 변경된다면 모든 Item의 Actor들은 동일하게 0.3의 값을 가지게된다.

 

각각의 Actor들이 다른 값을 가지게 하고싶다면 EditInstanceOnly의 값을 사용한다.

 

우측에 TimeCantant를 확인 할수 있다.

 

위와같이 각각의 ACtor 매쉬마다 다른 값을 가질 수 있게 할 수 있다 이를 통해 두개의 Item 매쉬는 다른 속도로 Sin함수 그래프를 그린다.

 

float DeltaZ = Amplitude * FMath::Sin(RunningTime * TimeConstant);

 

 

 

 

  1. EditAnywhere: 블루브린트, 에디터, c++ 어디서든 수정이 가능하다.
  2. VisibleDefaultsOnly: 블루프린트 화면에 표기는 하지만 수정할 수 없다.
  3. VisibleInstanceOnly: 해당 값은 인스턴스에서 볼 수있지만 수정할 수없다.
  4. VisibleAnywhere: 블루프린트, 인스턴스에서 모두 확인 할 수있지만 수정 할 수 없다.

 

 


블루프린터에서의 사용

Item.h

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

	UPROPERTY(EditAnyWhere, BlueprintReadWrite)
	float Amplitude = 0.5f;

BlueprintReadWrite와 같은 일부 옵션들은 private에서 동작할 수 없다. protected로 이동시킨다.

해당 옵션을 사용하게되면 Bluplrint에서 Node로 사용할 수 있다. (BluePrintReadOnly옵션도 있다.)

 

UPROPERTY(EditAnyWhere, BlueprintReadWrite, Category="Sin Parameter")
float Amplitude = 0.5f;

Category옵션으로 여러 변수, 함수들을 묶어서 볼 수 있다.

+ Recent posts