BLOGブログ

2024.01.10UE5UE/ 初心者向け

[UE5]誰が使っても安心!多重Spawnを防ぐ実装について

はじめに

こんにちは、エンジニアの山中です。

今回はゲームプレイ中に1つだけ存在して欲しいアクターの扱い方について

実用している方法を紹介します。

やりたいこと

唯一無二な存在であるキーボーくんを召喚して

継続的に体調チェックを行います。すっかり寒くなりましたから。

今回細かな設計は割愛させていただき、ひとまずレベルブル―プリントに実装していきます。

キーボーくんについて

レベルのBeginPlay時に生成処理を行い

その後、アクターの取得関数を用いでTickで体調チェック行います。

各関数の中身はそれぞれ下記の通り。

レベルブル―プリントの生成関数

レベルブル―プリントの取得関数

キーボーのブル―プリント側の処理

これでひとまず目的は達成できました。

体が資本!

発生し得る問題

過去の自分は他人と言いますように

常に関数が正しい使われ方をするとは限りません。

例えば下記のように使われてしまうと。。。

体調チェックどころではなくなってしまいました。

解消方法

2段階で改善していきます。

まずSpawnを複数回行えないように処理の前に

Validチェックを追加しましょう。

「Is Valid」から繋がぬようご注意を!

これにより、不意に複数回関数が呼ばれた場合でも

Spawn自体は1度しか行われません。

更に踏み込むとするなら、いっそ生成関数と取得関数を

まとめてしまっても良いかと思います。

取得関数・改

これで、取得関数を使用した際にSpawnされていなければ

Spawnを行った上でアクターを返し、

既にSpawn済みであれば保持したアクターを返してくれます。

使う側は体調チェックを行いたいタイミングで取得関数を1回呼ぶだけです。

BeginPlayいらず!

さいごに

いかがでしたか?

用意した機能を使用するのは人間ですので、常にミスをする可能性を考慮して

安心、安全な実装を心がけましょう。