Unreal Engine C++ Codings

  • 0
    いいね
  • 0
    コメント
    この記事は最終更新日から1年以上が経過しています。

    Unreal Engine プログラミングガイド(日本語)
    とりあえずここから初めて動くコードを置こう。

    Viewport上に任意のメッセージを表示する。

    *.cpp
    // GEngineを使用するのに必要。
    #include "Engine.h"
    
        // GEngineが存在しない場合がある
        if (GEngine)
        {
            // キーが-1の場合、上書きされずに常に新メッセージとして表示される(デバッグ向け)
            const int32 AlwaysAddKey = -1;
            // Viewport上にメッセージを表示する
            // キー, 表示時間, 文字色, 表示文字
            GEngine->AddOnScreenDebugMessage(AlwaysAddKey, 5.0f, FColor::Yellow, "MESSAGE");
        }
    

    Output Log対象のメッセージ表示。

    *.cpp
        UE_LOG(LogTemp, Log,        TEXT("output : %s"), L"Log Message");
        UE_LOG(LogTemp, Display,    TEXT("output : %s"), L"Display Message");
        UE_LOG(LogTemp, Warning,    TEXT("output : %s"), L"Warning Message");
        UE_LOG(LogTemp, Error,      TEXT("output : %s"), L"Error Message");
    
    結果

    キャプチャ.PNG

    変数の公開・編集可能範囲設定(UPROPERTY)

    *.cpp
        UPROPERTY(EditAnywhere)
        int32 inputVal1;
        UPROPERTY(EditAnywhere, Category = "User Input")
        int32 inputVal2;
    

    BlueprintReadWrite等を指定する場合はpublic:後に書く必要がある。
    さもなくばOtherCompilationError (5)が発生する。

    初期値はcpp側のクラスと同名のコンストラクタで設定できる。

    UPROPERTY/UFUNCTION等はpublic:後・コンストラクタ(初期化)前に呼び出す必要がある?

    *.h
    public: 
    
        UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
        int32 TotalDamage;
    
        UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage")
        float DamageTimeInSeconds;
    
        UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage")
        float DamagePerSecond;
    
        UFUNCTION(BlueprintCallable, Category = "Damage")
        void CalculateValues();
    
        AEditableSpotLightCpp();