UE4 GameplayEffectを適用するだけのGameplayAbilityを実行してクラッシュするだけのおばかな話

エラーの内容

Assertion failed: Spec.Ability [File:D:/Build/++UE4/Sync/Engine/Plugins/Runtime/GameplayAbilities/Source/GameplayAbilities/Private/AbilitySystemComponent_Abilities.cpp] [Line: 250]

めちゃくちゃどうでもいいことをだらだらと書いてるので原因まで飛んでください。

原因に飛ぶ

今日も今日とてゲーム制作を進めていると、とあるGameplayAbilityを実行するとクラッシュすることに気付いた。
そのGameplayAbilityは所有者にGameplayEffectを適用するだけの単純なもの。
エラーの内容は、
Assertion failed: Spec.Ability [File:D:/Build/++UE4/Sync/Engine/Plugins/Runtime/GameplayAbilities/Source/GameplayAbilities/Private/AbilitySystemComponent_Abilities.cpp] [Line: 250]

エラーの場所を見てみると、UAbilitySystemComponent::GiveAbilityだった。

GiveAbilityはキャラクターがコントローラーを所有したときに行っているので、GameplayAbilityを実行したときに、ここでエラーが出るのはおかしい。。。
冷静に考えれば、どこかのGrantedAbilityにnullptrを設定している可能性が高いことがわかるのだが、
僕は
「んー?呼び出し方が悪いのかなー?」→違う
「あれー。じゃあ呼び出すタイミングが悪いんだ!」→違う
「えー。じゃあ呼び出し方が(」→違う
「だったら、GameplayAbility(アセット)が!」→違う
を永遠にループして繰り返した。

その結果、まじで一ミリも原因が思いつかなかった僕はAnswerHubに投稿した。
「クラッシュシマース(英語)」

ふぅ、これで誰かしらが案を出してくれるだろう。
ちょっと休憩する前にもう一回、GameplayAbility(アセット)を見てみるかー。
んーなにも問題ないよなぁ。。。
念のためGameplayEffect(アセット)も確認っと。
マウスホイールスイ―ッ。
あれ?GrantedAbilitiesに何か設定してある。

原因

GameplayEffectアセットの一番下にある、GrantedAbilitiesにnullptrを設定していたため起こりました。
f:id:pto8913:20210108212430p:plain

f:id:pto8913:20210108213909p:plain
この間僅か3分っ!

みんなもnullptrに気を付けよう!