ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- 基本は
Get Current Level Nameノード → 文字列比較で判定 UGameplayStatics::GetLevelNameの Blueprint ラッパー。Streaming レベルでない永続レベル名を返す- PIE (Play In Editor) とパッケージング後で文字列が異なる場合がある →
Remove PrefixオプションでUEDPIE_0_を除去 - Soft Object Reference 比較で型安全にする方法もある
- 複数レベル判定は
Switch on Stringや Blueprint Function Library 化で整理
1現在のレベル名を取得する
Blueprint で「今どのレベルが開いているか」を判定する基本は Get Current Level Name ノードです。これは C++ の UGameplayStatics::GetCurrentLevelName のラッパで、永続レベル (Persistent Level) の名前を返します。
2最もシンプルな実装
[Event BeginPlay]
──→ [Get Current Level Name]
Remove Prefix String = true (推奨)
──→ String の出力
──→ [Equal (String)] と比較
A = (level name)
B = "MainLevel"
Return → Branch
True → Print "MainLevel です"
False → Print "別のレベル"
Get Current Level Name のオプション
- Remove Prefix String (デフォルト true): PIE 時の
UEDPIE_0_プレフィックスを自動で除去。これを有効にしないと PIE と本番で名前が変わる - 戻り値の型は
String。Name型ではない
3PIE vs パッケージング後の違い
UE では Play In Editor 中、レベル名に自動でプレフィックスが付きます:
| 実行モード | 取得される名前 |
|---|---|
| PIE (Server) | UEDPIE_0_MainLevel |
| PIE (Client) | UEDPIE_1_MainLevel |
| Standalone | MainLevel |
| Packaged | MainLevel |
Remove Prefix String = true でこの違いを吸収できます。
4Soft Object Reference で型安全に
文字列比較はタイプミスに弱い。Soft Object Reference を使うと、エディタでレベルを選択でき、リネームにも追従できます:
[Variable]
Name = TargetLevel
Type = Soft Object Reference → World
[Branch]
Condition:
Get → Get Current Level Soft Object Path (UE 5.x)
Equal? TargetLevel
# もしくは Soft Reference を文字列に変換して比較
[Get Path Name (Soft Object Reference)]
→ "/Game/Maps/MainLevel.MainLevel"
[Get Asset Name]
→ "MainLevel"
5複数のレベル判定 (Switch on String)
[Get Current Level Name (Remove Prefix=true)]
──→ [Switch on String]
Selection = (level name)
Pins:
"MainLevel" → 処理 A
"BattleLevel" → 処理 B
"TitleLevel" → 処理 C
Default → エラー処理
6Blueprint Function Library にまとめる
「現在のレベルが X か?」を頻繁に判定するなら、Blueprint Function Library に純粋関数として切り出すと再利用しやすくなります。
- Content Browser → 右クリック → Blueprints → Blueprint Function Library
- 名前を
BFL_LevelHelper等に - 関数
IsCurrentLevel(LevelName: Name) → boolを作成 - 内部で Get Current Level Name → 比較 → 真偽を返す
- BeginPlay 等から
IsCurrentLevel("MainLevel")で呼び出せる
[Function: IsCurrentLevel]
Input: LevelName (Name)
[Get Current Level Name (Remove Prefix=true)]
──→ [Name → String]
──→ [Equal (String, Case Insensitive)]
A = currentName
B = LevelName (String 変換)
──→ Return (bool)
7ストリーミングレベルの場合
Level Streaming (永続レベルにサブレベルをロード) を使っている場合、Get Current Level Name は永続レベル名を返します。ロード済みのサブレベルを判定したい場合は別の方法が必要です:
[Get Streaming Level (by Object Reference)]
Level = (Streaming Level Reference)
[Is Level Loaded] / [Is Level Visible]
→ bool
# サブレベルをすべて列挙
[Get World] → [Get Streaming Levels]
→ Array of Level Streaming
ループで .GetLevelName() を比較
8Level Transition でロード完了を検知
レベル切替直後に処理したいなら、OnLevelLoaded イベントが便利です:
[Get All Actors of Class] (GameInstance or GameMode で)
--- Open Level (by Name) して切替 ---
# GameInstance の Event Graph で
[Event Init]
Bind to → OnLevelLoaded
[Event OnLevelLoaded]
──→ [Get Current Level Name]
──→ 判定処理
9C++ から呼ぶ場合の対応
#include "Kernel/GameplayStatics.h"
void AMyActor::BeginPlay()
{
Super::BeginPlay();
FString CurrentLevel = UGameplayStatics::GetCurrentLevelName(this, true);
// 第二引数 RemovePIEPrefix = true
if (CurrentLevel == TEXT("MainLevel"))
{
UE_LOG(LogTemp, Log, TEXT("MainLevel detected"));
}
}
// または Level Soft Reference で
TSoftObjectPtr<UWorld> TargetLevel;
FString CurrentPath = GetWorld()->GetMapName();
CurrentPath.RemoveFromStart(TEXT("UEDPIE_0_"));
10FAQ
Q: PIE では一致するのに、パッケージング後だけ一致しない
A: Remove Prefix String が false になっている可能性。または比較対象の文字列が PIE 用にプレフィックス付きでハードコードされていないか確認。大文字小文字や末尾スペースも疑う。
Q: World Composition / World Partition を使っているとき
A: World Partition では永続レベルの概念が変わるため、レベル全体名の概念が薄れます。代わりに UWorldPartitionSubsystem や Data Layer 単位の判定を使用。
Q: GetCurrentLevelName と GetMapName の違い
A: GetCurrentLevelName はレベル名 (ファイル名相当)、GetMapName は World 全体のパス的な名前。PIE プレフィックス除去の有無や、サブレベル時の挙動が異なります。多くの場面では GetCurrentLevelName で十分。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- レベルを移動する方法
- レベルの「基本」テンプレートと「オープンワールド」テンプレートの違い
- Blueprintで現在開いているレベルが特定のレベルであるか調べる方法
- レベルごとにゲームモードを変更する方法
- 動的にインスタンスが属するレベルを変更する方法
- エディタ上でインスタンスが属するサブレベルを変更する方法
- とあるアクタから現在開いているレベルの変数にアクセスする方法
- プロジェクトを開いたときの最初のレベルを変更する方法
人気ページ
- 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
コメントを削除してもよろしいでしょうか?