はじめに
こんにちは、エンジニアの山中です。
今回はゲームプレイ中に1つだけ存在して欲しいアクターの扱い方について
実用している方法を紹介します。
やりたいこと
唯一無二な存在であるキーボーくんを召喚して
継続的に体調チェックを行います。すっかり寒くなりましたから。
今回細かな設計は割愛させていただき、ひとまずレベルブル―プリントに実装していきます。
キーボーくんについて
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h37_09-1024x634.png)
レベルのBeginPlay時に生成処理を行い
その後、アクターの取得関数を用いでTickで体調チェック行います。
各関数の中身はそれぞれ下記の通り。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h39_52-1024x629.png)
レベルブル―プリントの生成関数
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h40_15-1024x627.png)
レベルブル―プリントの取得関数
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h40_38-1024x630.png)
キーボーのブル―プリント側の処理
これでひとまず目的は達成できました。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h42_22-1024x605.png)
体が資本!
発生し得る問題
過去の自分は他人と言いますように
常に関数が正しい使われ方をするとは限りません。
例えば下記のように使われてしまうと。。。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h43_28-1024x635.png)
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h43_43-1024x605.png)
体調チェックどころではなくなってしまいました。
解消方法
2段階で改善していきます。
まずSpawnを複数回行えないように処理の前に
Validチェックを追加しましょう。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h49_52-1024x560.png)
「Is Valid」から繋がぬようご注意を!
これにより、不意に複数回関数が呼ばれた場合でも
Spawn自体は1度しか行われません。
更に踏み込むとするなら、いっそ生成関数と取得関数を
まとめてしまっても良いかと思います。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_18h58_00-1024x628.png)
取得関数・改
これで、取得関数を使用した際にSpawnされていなければ
Spawnを行った上でアクターを返し、
既にSpawn済みであれば保持したアクターを返してくれます。
使う側は体調チェックを行いたいタイミングで取得関数を1回呼ぶだけです。
![](https://historia.co.jp/wp/wp-content/uploads/2023/11/2023-11-13_19h01_42-1024x629.png)
BeginPlayいらず!
さいごに
いかがでしたか?
用意した機能を使用するのは人間ですので、常にミスをする可能性を考慮して
安心、安全な実装を心がけましょう。