⛈️

【UE5】EditorUtilityWidgetを使ってランタイム中にPlayerにGameplayAbilityを付与して実行させる

2024/12/04に公開

概要

この記事は一人アドベントカレンダー by ダリアの4日目の記事です。

今回は下記のようにランタイム中にGameplayAbilityの付与と実行をするようにしてみたので、それについて記事にしました。
https://x.com/daria_nicht/status/1855864047759196422

環境

UE5.4.4

やり方

まずEditorUtilityWidgetを作ります。

レイアウト

レイアウトはこのようになっています

クラス設定

次に、BPを開いたらまず設定にあるクラス設定Is Enable In PIEにチェックを入れます。

これにチェックを入れないとPIE中にボタンが押せなくなるためです。

BP

BPの処理の中身はこのようになっています。

まず、PreConstructでGameplayAbilityの変数をSinglePropertyViewの対象にして、GameplayAbilityをコンテンツブラウザから自由に選択できるようにします。

次にOnClickedでGameplayAbilityを実行できる様に準備します。

現在再生中のPIEを取得し、WorldContextObjectとして渡すことで、PlayerStatePawnを取得します。
次にそのPawnが持っているAbilitySystemコンポーネントを取得し、GiveAbilityAndActivateOnceを呼びます。

以上で設定は終わりです。

設定ができたら実行してみて、冒頭の動画のようにGameplayAbilityが選択でき、その状態でボタンを押したらGameplayAbilityが実行できれば成功です。

Discussion