ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
Unreal Engine 5(UE5)でC++クラスをBlueprintから利用していると、出力ログやコンパイル時に「~は表示されるブループリント(BlueprintReadOnlyまたはBlueprintReadWrite)ではありません。これは将来のリリースでエラーとなるため、マークアップを修正するかアクセスを停止してください。」という警告が表示されることがあります。これは英語版UE5の "... is not blueprint visible (BlueprintReadOnly or BlueprintReadWrite). Please fix mark up or cease accessing as this will be made an error in a future release." に対応するメッセージです。
このエラーの意味
このメッセージは、C++側でBlueprintへの公開(公開マークアップ)を一切付けていないメンバー(変数や関数)を、Blueprintのグラフから参照・呼び出ししていることを意味します。
UE5では、C++のメンバーをBlueprintで扱えるようにするには、変数なら UPROPERTY に BlueprintReadOnly / BlueprintReadWrite を、関数なら UFUNCTION に BlueprintCallable 等を明示的に指定する必要があります。これらの指定が無いメンバーは「Blueprintからは見えない(blueprint visible でない)」扱いになります。
過去のバージョンでは、公開指定が無くてもBlueprint側がそのメンバーへの参照を保持できてしまうケースがありました。現在のUE5はこれを「不正なアクセス」とみなし、いまは警告に留めているものの、将来のリリースではコンパイルエラーに昇格させると予告しています。つまり放置してよい警告ではなく、いずれビルドが通らなくなる前触れです。メッセージ中の「マークアップを修正する」か「アクセスを停止する」の二択は、まさに後述の解決方針そのものを指しています。
主な原因
- C++クラスで定義した変数に
BlueprintReadOnlyもBlueprintReadWriteも付いていないのに、Blueprintのグラフでその変数をGet/Setしている。 - C++の関数に
BlueprintCallable(またはBlueprintPure)が付いていないのに、Blueprintからその関数を呼んでいる。 - もともと公開していた変数・関数から、後で誤って公開指定を外した(または
UPROPERTY/UFUNCTION自体を消した)。 - エンジンや他プラグインの更新で、依存しているC++メンバーの公開マークアップが変わった(サードパーティ製プラグイン更新時によく起こります)。
メッセージ冒頭の「~」の部分には、実際には クラス名.メンバー名(例:VehicleActorFactory.VehiclesParams)が入ります。まずこの名前を確認し、どのC++メンバーが問題なのかを特定するのが第一歩です。
解決方法1:プロパティをBlueprintに公開する
その変数をBlueprintで使い続けたい場合は、C++ヘッダ(.h)の UPROPERTY に公開指定を追加します。読み取りだけで十分なら BlueprintReadOnly、Blueprint側からも値を変更したいなら BlueprintReadWrite を使います。
// 修正前:Blueprint公開指定が無いので警告になる UPROPERTY() int32 MyValue;
// 修正後(読み取り専用で公開) UPROPERTY(BlueprintReadOnly, Category = "Stats") int32 MyValue;
// 修正後(読み書き両方を許可し、詳細パネルでも編集可にする例) UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Stats") int32 MyValue; |
Category はBlueprintエディタや詳細パネルでの分類名です。必須ではありませんが、指定しておくとノード検索や詳細パネルで見つけやすくなるため推奨されます。
BlueprintReadOnly と BlueprintReadWrite の違い
| 指定子 | Blueprintでの読み取り(Get) | Blueprintでの書き込み(Set) | 主な用途 |
|---|---|---|---|
BlueprintReadOnly | 可能 | 不可(Setノードが作れない) | C++側でのみ値を更新し、Blueprintは参照するだけのステータス・計算結果など |
BlueprintReadWrite | 可能 | 可能 | Blueprintから自由に値を変更したいパラメータ・設定値など |
迷ったら、まずは安全側の BlueprintReadOnly から始め、Blueprintで値を書き換える必要が出てきたら BlueprintReadWrite に変更するのが安全です。なお、両方を同時に指定することはできません(どちらか一方を選びます)。
解決方法2:関数をBlueprintに公開する
問題のメンバーが関数の場合は、UFUNCTION に BlueprintCallable を付けます。実行ピン(白い実行線)を持つ通常の呼び出しノードになります。
// 修正前:Blueprintから呼べないのにグラフで呼んでいる void MyFunction();
// 修正後:Blueprintから呼び出し可能にする UFUNCTION(BlueprintCallable, Category = "Gameplay") void MyFunction();
// 値を返すだけで副作用が無い関数は BlueprintPure が適切 UFUNCTION(BlueprintPure, Category = "Gameplay") int32 GetScore() const; |
状態を変えず値を返すだけの関数(ゲッターなど)は、BlueprintCallable の代わりに BlueprintPure を使うと、実行ピンの無い純粋ノードになりグラフがすっきりします。const を付けた関数に BlueprintCallable を指定した場合も、自動的にPureノードとして扱われます。
解決方法3:アクセスをやめる(公開しない選択)
そのメンバーを本来Blueprintから触る必要が無い場合は、無理に公開せず、メッセージのもう一方の指示どおり「アクセスを停止する」のが正解です。具体的には次のように対応します。
- 該当するBlueprintのグラフを開き、そのC++メンバーを参照しているGet/Set/呼び出しノードを削除する。
- 変数や関数をBlueprintのロジックではなく、C++側の処理に置き換える。
- どのBlueprintが参照しているか分からない場合は、エディタの「Reference Viewer」や、対象アセットを右クリックして参照元をたどって特定する。
参照ノードをすべて取り除けば、C++側のマークアップを変更しなくても警告は出なくなります。「使っていないのに警告が出る」ケースは、過去に作って消し忘れたノードが残っていることが多いので、まずグラフを見直しましょう。
よくある落とし穴
| 落とし穴 | 対処 |
|---|---|
| 警告だからと放置する。「将来のリリースでエラーとなる」と明記されているとおり、いずれビルドが通らなくなります。 | 気付いた時点で公開指定の追加か参照削除を行い、後回しにしない。 |
private メンバーにそのまま公開指定を付ける。BlueprintReadOnly/BlueprintReadWrite は private 変数に付けると別のコンパイルエラー("BlueprintReadWrite should not be used on private members")になります。 | アクセス修飾子を public か protected にする。privateのままにしたい場合は UPROPERTY(BlueprintReadOnly, meta=(AllowPrivateAccess="true")) のように AllowPrivateAccess を併用する。 |
ヘッダを編集したのに反映されない。.h の UPROPERTY/UFUNCTION を変更してもエディタを再起動・再コンパイルしないと反映されません。 | エディタを閉じてIDEからビルド(リコンパイル)するか、ライブコーディングではなく通常ビルドでヘッダの変更を確実に反映させる。 |
| Category を付け忘れてノードが見つからない。公開はできても、Blueprintのコンテキストメニューで探しづらくなります。 | Category = "適切な分類名" を付け、検索しやすくする。 |
| サードパーティ製プラグイン内のメンバーが原因。自作コードを直しても警告が消えない。 | 警告メッセージのクラス名・メンバー名からプラグインを特定し、プラグイン側の更新を待つか、自分のBlueprintから該当参照を外す。 |
よくある質問(FAQ)
Q. このまま無視してもゲームは動きますか?
A. 現時点では警告なので動作はします。ただしメッセージのとおり将来のUE5バージョンでコンパイルエラーに昇格する予定のため、エンジンをアップデートした途端にビルドが通らなくなる恐れがあります。早めの対応を強く推奨します。
Q. BlueprintReadOnly と BlueprintReadWrite はどちらを選ぶべきですか?
A. Blueprint側で値を変更する必要が無いなら BlueprintReadOnly を選びます。意図しない書き換えを防げて安全です。Blueprintから値を設定したい場合のみ BlueprintReadWrite を使います。
Q. C++を直せない(コードを触りたくない)場合はどうすればいいですか?
A. C++のマークアップを変更できないなら、Blueprintグラフ側で該当メンバーを参照しているノードをすべて削除してください。「アクセスを停止する」ことでも警告は解消できます。それでも値が必要な場合は、公開済みの別のメンバーや関数経由で取得できないか検討します。
Q. 「~」の部分にはどんな名前が入りますか?
A. 実際の警告では クラス名.メンバー名 の形で、問題となっているC++のプロパティ名または関数名が表示されます。その名前をC++ヘッダ内で検索し、対象の UPROPERTY/UFUNCTION を特定してください。
指定子の細かな組み合わせや最新の挙動は、お使いのUE5バージョンによって異なる場合があります。確実を期す場合は公式ドキュメント(UPROPERTY/UFUNCTIONの指定子一覧)の確認を推奨します。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- SetInputMode_UIOnlyは、'PlayerController'ターゲットとして有効なプレイヤーコントローラーを想定しています
- 無限ループが検出されました
- ~は表示されるブループリント(BlueprintReadOnlyまたはBlueprintReadWrite)ではありません。これは将来のリリースでエラーとなるため、マークアップを修正するかアクセスを停止してください。
- 古いHLODアクタを検出、HLODをリビルドする必要があります
- ブループリントランタイム エラー: "プロパティ ~ の読み取りを試行するためのアクセスはありません"
- 「AI Move To」が「Aborted」で失敗
- 「AI Move To」が「Blocked」で失敗
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?