技能ごとにレベルを定義し、現在のレベルに合わせたパラメータを使用するシステムを作成する。
1. レベルごとのパラメータを定義
レベルによって変化するパラメータを構造体に定義する。
[Add > Blueprint > Structure] から「S_Ability_Attack」を作成する。
データテーブルにレベルごとのパラメータの値を定義する。
[Add > Miscellaneous > Data Table] から作成した構造体を使って「DT_Ability_Slash」を作成する。
「RowName」がレベルになる。
2. 列挙体に技能名とパラメータ名を定義
レベル管理をする技能の対象を列挙体に定義する。
[Add > Blueprints > Enumeration] から「E_AbilityName」を作成する。
パラメータの一覧を列挙型に定義する。
[Add > Blueprints > Enumeration] から「E_AbilityValue」を作成する。
3. レベルごとのパラメータをセットする関数を作成
キャラクターベースのブループリントを開く。
以下の変数を作成する。
「AbilityLevel」は技能ごとのレベル、「AbilityExp」は技能ごとの獲得経験値、「AbilityValue」はそのレベルにおける技能ごとのパラメータの値を格納する。
「AbilityLevel」と「AbilityExp」のキーはE_AbilityName
で、「AbilityValue」のキーはE_AbilityValue
。
現在のレベルを取得し、データテーブルからパラメータの値を取得する関数「SetAbilityValue」を作成する。
4. レベルと経験値の取得処理
将来セーブ機能を実装した時のために、現在のレベルと経験値は「BP_GameManager」から取得するようにする。
「BP_GameManager」を開き、レベルを管理するキャラごとにレベルと経験値を格納する変数を作成する。
レベルを管理するキャラごとにゲッター関数を作成する。
次にレベルを管理する各キャラクターのブループリントで、レベルと経験値を取得し各パラメータの値をセットする処理を書く。
敵キャラ等のレベルが固定のキャラに関しては、キャラの種類ごとにレベルを定義したデータテーブルを作成した上で、キャラクターブループリントに以下のようにパラメータをセットする。