やさしいプラグインを作るための C++ Tips

11K Views

November 17, 23

スライド概要

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

やさしいプラグインを作るための C++ Tips UE Tokyo .dev #2 Metaseven

2.

自己紹介 Metaseven(めたせぶん) 𝕏: @suramaru517 ゲームプログラマー1年目 今年の My GOTY は Spider-Man2 2

3.

本日の内容 1. 出品したプラグインの紹介 2. やさしい関数 3. やさしい変数 3

4.

1. 出品したプラグインの紹介 4

5.

Auto Footstep Tool Auto Footstep Tool:コードプラグイン - UE マーケットプレイス キャラクターの足音まわりを 簡単にセットアップできるプラグイン 無料! 5

6.

やさしいところ ● 足が地面に着くフレームを検出して ワンクリックで通知を追加できる ● 四足歩行などの人型以外にも対応 ● 地面の種類による足音の鳴らし分けが データの設定のみで可能 ● 非同期ライントレース・ロードを 使用しているので低負荷 6

7.

2. やさしい関数 7

8.

非同期ライントレース ● UWorld::AsyncLineTraceByChannel 足の接地判定に使用 同期的に結果を得る必要性が低いものは、非同期にした方が低負荷でやさしい 参考:GitHub - seiko-dev/AsyncLineTraceSample Blueprint で使いたい場合は、C++ でノードを作る必要アリ (UBlueprintAsyncActionBase を使うのがオススメ) コード例:AutoFootstepAnimNotify.cpp #L49 8

9.

非同期ロード ● FStreamableManager::RequestAsyncLoad ソフト参照な足音エフェクトをロードするために使用 ロード時にヒッチが発生しなくてやさしい Blueprint では AsyncLoadAsset ノードでおなじみ コード例:AutoFootstepEffectContext.cpp #L32 9

10.

3. やさしい変数 10

11.

ボーンの検索候補が出てくる FName ● UPROPERTY(meta = (AnimNotifyBoneName = true)) AnimNotify の FName の変数限定だが 上記を追加すると値を入力した時に ボーンの検索候補が出てくるようになる やさしい FName ではなく FBoneSocketTarget を使う方法もある 11

12.

値のみ編集可能な TMap ● UPROPERTY(EditFixedSize, meta = (ReadOnlyKeys)) TMap の変数に上記を追加すると、値しか変更できなくなる キーと要素数を固定したい場合に誤操作による変更が防げてやさしい 12

13.

条件によって編集不可・非表示になる変数 変数に以下を追加すると、EditCondition の値が false の時に編集不可になる ● UPROPERTY(meta = (EditCondition = "bAddNotify")) さらに以下も追加すると、編集不可ではなく非表示になる ● UPROPERTY(meta = (EditConditionHides)) 13

14.

よりやさしい変数 UObject::PostEditChangeProperty をオーバーライドすることで いずれかの変数の値が変更された時の 処理を記述できる 例えば右図のように TSet の変数の要素がキーとなるような やさしい TMap の変数を自動的に作れる コード例:AutoFootstepAnimationModifier.cpp #L207 14

15.

まとめ プログラマー以外にも易しくて優しいプラグイン制作を心掛けよう! 15