ブループリント名前空間
ブループリント名前空間 は、不要なアセットがロードされないようにすることで、エディタでブループリント アセットを開く際にかかる時間を最適化します。この動作は、大規模プロジェクトで役立ちます。なぜなら、エンジンでは、開いているブループリントが参照しているかどうかにかかわらず、すべての ブループリント関数ライブラリ アセットおよび マクロ ライブラリ アセットをロードして、初期化タスクを実行するからです。
ブループリント名前空間にアセットをグループ化することで、必要になるまでアセットのロードを保留することができます。このことにより、ブループリント エディタで作業する際にさらにメリットがもたらされます。ブループリント アセットがコンテキスト メニューから実行できるすべてのアクションがそのブループリント名前空間に絞り込まれるためです。
機能を使用する
この機能の実例を確認するには、次の手順を実行します。
-
まず、[New (新規)] > [Games (ゲーム)] > [Blank Project] を選択して、[With Starter Content (スターターコンテンツ有り)] を有効にし、「BlueprintNamespaces」という名前の新しいプロジェクトを作成します。
-
[Content Drawer (コンテンツ ドロワー)] をクリックして開き、「StaterContent」 > 「Blueprints」を選択して、Blueprint_CeilingLight ブループリントをダブルクリックして [Class Defaults (クラスのデフォルト)] を開きます。
-
ツールバー で [Class Settings (クラス設定)] をクリックして、[Details (詳細)] パネルの [Blueprint Options (ブループリント オプション)] カテゴリに移動します。Blueprint Namespace 変数で、テキスト フィールドに名前空間を入力します。
このサンプルでは、ブループリント名前空間に「BlueprintNamespaces.StarterContent」という名前を付けています
[Blueprint Namespace (ブループリント名前空間)] テキスト フィールドに名前空間を入力すると、エディタがその文字列を検証して、「#」や「,」などこのフィールドで使用できない文字が含まれていないことを確認します。
-
[Compile (コンパイル)] と[Save (保存)] の順にクリックして、ブループリント をコンパイルして保存します。
-
コンテンツ ブラウザ に移動して、Blueprint_CeilingLight アセットにカーソルを重ねると、名前空間データを表示するツールチップが表示されます。
エディタの起動後、コンテンツ ブラウザで「BlueprintNamespace=StarterContent」を検索すると、名前空間がすでに割り当てられているライブラリ アセットを確認できます。
新規に作成したアセットの 1 つへの参照を含むブループリント アセットを開くと、参照するブループリントのパッケージ インポートの依存関係としてロードされます。これらのアセットの 1 つをすでに参照している親ブループリント クラスで新しいブループリントを基盤としている場合も、同じ動作が実行されます。
名前空間をインポートする
インポートは、.cpp
ソース ファイルでライブラリ ヘッダに「#include」を追加するのと同様のプロセスです。ブループリント名前空間で作業する場合、次のいずれかの方法で名前空間をインポートできます。
ブループリント名前空間を設定する
次の手順を実行すると、エディタでアクセスできるようにする必要のある名前空間グループにブループリント名前空間を追加することができます。
-
[Content Drawer]を開いて、「Blueprint」をダブルクリックし、その [Class Defaults] を開きます。
-
ツールバー で [Class Settings (クラス設定)] をクリックして、[Details] パネルの [Blueprint Options (ブループリント オプション)] > [Blueprint Namespace (ブループリント名前空間)] カテゴリに移動して、テキスト フィールドに名前空間を入力します。
-
ツールバー で、[Compile] と [Save] を順にクリックします。
ブループリントを開くと、ブループリント エディタの初期化時に、同一の名前空間に設定された共有ライブラリ ア セットが自動的にインポートされます。
エディタの環境設定またはプロジェクト設定を変更する
共有ライブラリ アセットがすべてのブループリント アセットに自動的にインポートされるワークフローを使用したい場合は、[Editor Preferences (エディタの環境設定)] または [Project Settings (プロジェクト設定)] を変更して、開いたブループリントがその名前空間に属しているか、インポートするかにかかわらず、エディタで共有ライブラリ アセットの指定したサブセットを確実にインポートすることができます。
[Editor Preferences] の編集は、ユーザーごとのローカル インスタンスに影響し、[Project Settings] の編集はプロジェクト全体の範囲に適用されます。これは、プロジェクトでソース コントロールを共有しているすべてのユーザーに影響します。*
ローカルのエディタ インスタンスにデフォルトのインポート セットを設定するには、次の手順を実行します。
-
ツールバー で [Edit (編集)] > [Editor Preferences (エディタの環境設定)] > [Content Editors (コンテンツ エディタ)] > [Blueprint Editor (ブループリント エディタ)] > [Experimental (実験的機能)] を選択して、[Namespaces to Always Include (常に含める名前空間)] フィールドで 追加 (+) ボタンをクリックして名前空間をリストに要素として追加します。
[Editor Preferences (エディタの環境設定)] に移動すると、ブループリント エディタの Global Namespace セットをローカルに変更する機能があります。
共有ライブラリ アセットの特定のサブセットが常にプロジェクト全体にインポートされるようにすべてのユーザーに対してプロジェクトをカスタマイズするには、次の手順でこの機能を有効にします。
-
[Edit (編集)] > [Project Settings] > [Editor (エディタ)] > [Blueprint Project Settings (ブループリント プロジェクト設定)] > [Experimental] に移動して、[Namespaces to Always Include] 配列リストで、追加 (+) ボタンをクリックして自分の名前空間をリストに追加します。
[Project Settings] で、「BlueprintNamespaces.StarterContent」という名前の名前空間を含むように [Blueprint Project Settings] を編集しています。
*追加 (+) ボタンをクリックすると、ブループリントに 1 つ以上の名前空間を明示的にインポートできます。
-
インポートを追加すると、現在その名前空間に割り当てられている共有ライブラリが直ちにロードされます。
-
インポートを削除してもエディタでのパフォーマンスにマイナスの影響はありません。ただし、その名前空間に関連付けられている型およびアクション メニューのフィルタ動作を使用できなくなります。
名前空間を暗黙的にインポートする
コンテキスト メニューでインポートされていない型またはアクションを選択すると、名前空間を暗黙的にインポートすることができます。ロードされていない型ピッカーを選択すると、その型のパッケージは、強い参照型の選択時にロードされます。
これにより自動インポート動作が損なわれるように思えるかもしれませんが、インポートされていない型を選択することで、上記の方法でブループリントの明示的なインポート セットにその型の名前空間を暗黙的に追加するステップが実行されます。
この機能が機能していることを確認するには、次の手順を実行します。
-
「TestType」という名前の新しいブループリント アセットを作成して、[Class Settings] > [Details] > [Blueprint Options] に移動して、そのアセットを「YourNameSpace.AutoImportTest」という名前の名前空間に割り当てます。
この例では、ブループリント名前空間に「BlueprintNamespaces.AutoImportTest」という名前を付けました。
-
[Compile] と [Save] を順にクリックしてから、エディタを再起動します。
-
[Content Drawer] をクリックしてから、「Content」 > 「StarterContent」 > 「Blueprints」の順に移動し、Blueprint_CeilingLight をダブルクリックしてその [Class Defaults] を開きます。
既存のブループリントを開くことも、新しいブループリントを作成することもできます。この例では、既存の Blueprint_CeilingLight を使用しています。
-
[Class Defaults] で [My Blueprint (マイ ブループリント)] > [Variables (変数)] に移動して、追加 (+) ボタンをクリックし、「TestTypeVar」という名前の新しい変数を作成します。
-
[Boolean] ドロップダウン矢印をクリックして、ピン型セレクタを表示し、テキスト フィールドで「TestType」を検索して、選択し [Object Reference (オブジェクト参照)] を選択します。
-
[Class Settings] をクリックして、[Details] パネル > [Imports (インポート)] > [Imported Namespaces (インポートされた名前空間)] に移動すると、[Imported Namespaces] カテゴリに YourNamespace.AutoImportTest が表示されていることを確認できます。
自動インポートを使用すると、型をアンロードする必要がありません。この場合、グローバルでなく、まだインポートされていない名前空間は、選択時に自動インポートされます。名前空間のインポート機能を有効にすると、そのアセットの名前空間がブループリントに自動的にインポートされます。
-
関数の入力引数のデフォルト値を変更すると、ローカル変数により、その値に関連付けられている名前空間がインポートされます。
-
構造体またはコンテナ型のデフォルト値を変更すると、コンテナの内部値および構造体の子メンバー プロパティに関連付けられているすべての名前空間がインポートされます。
-
[Components (コンポーネント)] パネルに新しいコンポーネントを追加すると、選択されたコンポーネント タイプに関連付けられているすべての名前空間が自動的にインポートされます。この動作は、インポートされていないコンポーネント タイプにも適用されます。
インポートされていない型およびアクションをフィルタリングする
デフォルトでは、インポートされていない型とアクションはコンテキスト メニューに表示されますが、インポートされない型に対して追加のフィルタを有効にしたい場合は、次の手順を実行します。
-
[Content Drawer] をクリックして、追加 (+) > [Advanced Asset (高度なアセット)] > [Blueprints] > [Blueprint Function Library] をクリックして、「Bp_FilterFunctionLibrary」というブループリント関数ライブラリを作成します。
-
Bp_FilterFunctionLibrary をダブルクリックして、[Class Defaults] を開きます。[My Blueprint (マイ ブループリント)] パネルから [Functions (関数)] カテゴリに移動して NewFunction_0 の名前を「FilteredFunction_0」に変更します。[Class Settings] をクリックして、[Details] > [Blueprint Options] > [Blueprint Namespaces] に移動し、「YourNamespace.FilterTest」と入力します。
この例では、これは「BlueprintNamespaces.FilterTest」になります。
-
追加 (+) ボタンをクリックすると、FilteredFunction_1 という名前の新しい関数を作成できます。
-
[Class Settings] をクリックして、[Details] パネルで [Blueprint Options] > [Blueprint Namespace] に移動し、ドロップダウン メニューから [YourNamespace.FilterTest] (以下の例では、これは [BlueprintNamespaces.FilterTest]) を選択します。
-
[Compile (コンパイル)] と [Save (保存)] を順にクリックします。
-
「Content」 > 「StarterContent」 > 「Blueprints」の順に移動して、Blueprint_CeilingLight をダブルクリックしてその [Class Defaults] を開きます。
-
[Class Defaults] から、イベント グラフ に移動して、イベント グラフを右クリックして [Actions (アクション)] を開きます。「Filtered Function」を検索すると、Filtered Function がコンテキスト メニューに表示されます。