ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- Event BeginPlay は、アクターが生成され初期化が完了したあとに一度だけ呼ばれる、ゲーム開始時の初期化用イベントです。
- 呼ばれるのは「ゲームプレイが始まったとき」。エディタでアクターを配置・編集した瞬間に走る Construction Script とは別物です。
- 実行順は コンストラクタ → Construction Script → BeginPlay → Tick(毎フレーム) → EndPlay(破棄時) の流れで位置づけられます。
- 主な用途は、変数の初期化・UI/HUD の表示・タイマー開始・他アクターへの参照取得など「最初の一回だけ行いたい準備」。
- 同じフレーム内の他アクターの BeginPlay 完了順序は保証されないため、初期化順に依存する設計は避けるのが安全です。
Event BeginPlay は、アクター(Actor)が生成(スポーン)され初期化が完了したあとに一度だけ呼ばれる、ゲーム開始時の初期化用イベントです。ブループリントのイベントグラフでは最初に置かれることが多いノードで、「ゲームが始まった瞬間に、このアクターでまず何をするか」をここに書きます。本記事では、Unreal Engine 5(以下 UE5)系での Event BeginPlay について、呼ばれるタイミング・ライフサイクル上の位置づけ・具体的な使い方・他の初期化処理との違い・落とし穴を整理します(記述は2026年時点の一般的な挙動に基づきます。細かなバージョン差はEpic公式ドキュメントの確認を推奨します)。
1Event BeginPlay とは何のイベントか
Event BeginPlay は、アクターやアクターコンポーネントがゲームプレイ可能な状態になった直後に呼び出されるイベントです。「ゲームプレイ可能な状態」とは、そのアクターのコンポーネントが用意され、必要な初期化(PostInitializeComponents など)が済み、ゲームのレベルでプレイが開始された状態を指します。
重要なのは、BeginPlay が走るのは実際にゲームが動き出したときだという点です。エディタ上でアクターをレベルに置いたりプロパティを編集したりした時点では呼ばれません(その役割は後述の Construction Script が担います)。そのため BeginPlay の中では、ゲーム実行中であることを前提とした処理――他のアクターを参照する、タイマーを動かす、UI を画面に出す、といった処理を安全に書けます。
2呼ばれるタイミングとライフサイクル
アクターが生成されてから破棄されるまでの大まかな流れの中で、BeginPlay がどこに位置するかを押さえると理解が早くなります。代表的なイベントの並びは次のとおりです。
| 順 | 段階 | 呼ばれる回数 | 主な役割 |
|---|---|---|---|
| 1 | コンストラクタ(C++) | 生成時に1回 | デフォルト値の設定・コンポーネントの生成(ゲーム外の状態に依存しない初期化) |
| 2 | Construction Script | 配置・編集時/スポーン時 | エディタ上の見た目・配置に応じたセットアップ |
| 3 | Event BeginPlay | ゲーム開始時に1回 | ゲーム実行を前提とした初期化(本記事の主役) |
| 4 | Event Tick | 毎フレーム | 継続的な更新処理(移動・判定など) |
| 5 | Event EndPlay | 破棄・終了時 | 後始末(タイマー解除・参照のクリアなど) |
つまり BeginPlay は「準備(コンストラクタ・Construction Script)が終わり、毎フレームの処理(Tick)が始まる直前」に挟まる、ワンショットの初期化ポイントだと捉えると分かりやすいです。レベルに最初から配置されているアクターも、ゲーム中に動的にスポーンされたアクターも、どちらも生成後に BeginPlay が呼ばれます(動的スポーンの場合はスポーンされたそのタイミングで呼ばれます)。
3主な用途
BeginPlay は「ゲーム開始時に一度だけ行いたい準備」を書く場所です。代表的な用途は次のとおりです。
- 変数の初期化:HP・スコア・状態フラグなどに初期値をセットする。
- UI / HUD の表示:Widget を生成して画面に追加する(Create Widget → Add to Viewport)。
- タイマーの開始:一定間隔で処理を走らせる Set Timer by Function Name / by Event を起動する。
- 他アクターやコンポーネントの参照取得:Get All Actors of Class や参照変数で連携相手をキャッシュする。
- サウンド・エフェクトの再生:開始時の演出を一度だけ鳴らす。
- セーブデータの読み込み・適用:保存済みの状態をゲーム開始時に反映する。
4ブループリントでの使い方(手順)
ブループリントでは、Event BeginPlay ノードに処理をつないでいくだけで初期化を実装できます。基本の手順は次のとおりです。
- 対象のアクターブループリントを開き、イベントグラフ(Event Graph) を表示します。
- 多くの場合、新規アクターブループリントには Event BeginPlay ノードが最初から薄く配置されています。無ければ、グラフの何もない場所で右クリックし、検索欄に「BeginPlay」と入力して Event BeginPlay を追加します。
- BeginPlay ノードの右側にある白い実行ピン(▷)から、行いたい処理のノードへドラッグして接続します。
- 処理を順番につなげていけば、ゲーム開始時に上から下へ実行されます。
たとえば「ゲーム開始時にアクターの位置を初期化し、開始音を鳴らす」なら、BeginPlay → Set Actor Location → Play Sound 2D の順につなぐ、といった形になります。同じ Event BeginPlay ノードは1つのグラフに1つだけ置く点にも注意してください(複数の初期化はノードを直列につないで表現します)。
5C++ での BeginPlay() オーバーライド例(任意)
C++ でアクターを実装する場合、AActor の仮想関数 BeginPlay() をオーバーライドして初期化処理を書きます。親クラスの初期化が走るよう、必ず先頭で Super::BeginPlay() を呼ぶのが基本です。
|
// MyActor.h(宣言部・抜粋) protected: virtual void BeginPlay() override;
// MyActor.cpp(実装部) void AMyActor::BeginPlay() { Super::BeginPlay(); // 親クラスの初期化を必ず先に呼ぶ UE_LOG(LogTemp, Log, TEXT("BeginPlay called")); // ここにゲーム開始時の初期化を記述 } |
C++ の BeginPlay() と、ブループリントの Event BeginPlay は同じライフサイクル上のイベントです。一般に C++ 側の BeginPlay() が先に走り、その流れでブループリント側の Event BeginPlay が実行されます。なお、コンポーネントの生成(CreateDefaultSubobject)はコンストラクタ内でのみ行う必要があり、BeginPlay では行えない点に注意してください(詳細な呼び出し順や制約は公式ドキュメントの確認を推奨します)。
6他の初期化処理との違い(比較表)
UE5 には初期化に関わる仕組みが複数あり、混同しやすいポイントです。役割の違いを整理します。
| 仕組み | 呼ばれるタイミング | ゲーム実行中か | 主な使いどころ |
|---|---|---|---|
| コンストラクタ (C++) |
アクター生成時(CDO生成を含む) | 必ずしも実行中ではない | デフォルト値・コンポーネント生成。ゲーム状態に依存しない初期化 |
| Construction Script | エディタでの配置・編集時、およびスポーン時 | エディタ上でも走る | 配置パラメータに応じた見た目・構成のセットアップ |
| Event BeginPlay | ゲームプレイ開始後、初期化完了時に1回 | ゲーム実行中のみ | 他アクター参照・タイマー・UI表示など実行前提の初期化 |
ポイントは「Construction Script はエディタ上でも走るのに対し、BeginPlay はゲームを実行したときだけ走る」ことです。他のアクターを探したりタイマーを動かしたりする処理を Construction Script に書くと、エディタ操作中に意図せず動いてしまうことがあるため、ゲーム実行を前提とする初期化は BeginPlay 側に書くのが定石です。
7使用時の落とし穴
| 注意したいポイント |
|---|
|
8よくある質問(FAQ)
Q1. Event BeginPlay と Event Tick はどう違いますか?
BeginPlay はゲーム開始時に一度だけ呼ばれる初期化用、Event Tick は毎フレーム繰り返し呼ばれる更新用です。最初の準備は BeginPlay、その後の継続的な処理は Tick、と役割を分けて使います。
Q2. レベルに最初から置いてあるアクターと、ゲーム中にスポーンするアクターで BeginPlay は違いますか?
どちらも生成後に BeginPlay が呼ばれます。違いは呼ばれるタイミングで、配置済みアクターはゲーム開始時に、動的スポーンのアクターはスポーンされたその時点で呼ばれます。
Q3. C++ で BeginPlay() をオーバーライドするとき注意することは?
先頭で Super::BeginPlay() を呼び忘れないことです。これを省くと親クラスの初期化が走らず、不具合の原因になります。また、コンポーネントの生成はコンストラクタで行う必要があり、BeginPlay では行えません。挙動の細部はバージョンにより差があり得るため、公式ドキュメントの確認を推奨します。
9まとめ
Event BeginPlay は、アクターが生成・初期化されたあとゲーム開始時に一度だけ呼ばれる、UE5 の基本的な初期化イベントです。コンストラクタや Construction Script との役割の違い(特に「実行中だけ走る」という性質)と、他アクターの初期化順序に依存しないという注意点を押さえておけば、安定した初期化処理を組み立てられます。細かな呼び出し順やバージョン固有の挙動については、Epic 公式のアクターライフサイクルのドキュメントを併せて確認すると確実です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- Event BeginPlay
- Event ActorBeginOverlap
- Event Tick
- on component begin overlap
- On Component Hit
- CameraBoom(Spring Arm)
- Get Player Character
- Nav Mesh Bounds Volume
- AI MoveTo
- Pawn
- Create Render Target 2D
- Take High Res Screenshotノード
- Sphere Reflection Capture
- Event Tickノード
- ウィジェットのキャンバスパネル
- DefaultSceneRoot
- FloatingPawnMovement
- Set World Rotation
- Event Any Damage
- Set World Rotation
- VInterp To
- Get Socket Transform
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?