アクタを検索する

UE4 のシーン内でアクタを見つけるための操作ガイドです。

Choose your operating system:

Windows

macOS

Linux

コンテンツ

ゲームとレベルを構築し始めると、シーン内の個々のアクタを見つけることが難しく感じるかもしれません。レベルに設定されている構成要素やジオメトリから NPC、敵、インタラクション可能なオブジェクトやピックアップに至るまで、シーン内のアクタが数百に上ることは珍しくありません。これらの中からひとつのアクタを探し出すのは、ことわざでいう「干し草の山の中にある一本の針を見つける (つまり無駄骨を折る) 」ようなものです。

ただし、ワールド アウトライナー を使って、シーン内のアクタの検索幅を狭めることはできます (以下の図参照)。

Actors1.png

上図では、レベル内に配置されたすべてのアクタがワールド アウトライナー (右) に表示されます。ワールド アウトライナー内のアクタを 1 つクリックすると、レベル ビューポート内でも強調表示されます。Actor (アクタ) または Type (種類) のヘッダをクリックすれば、 ワールド アウトライナー をアクタ名またはアクタの種類でソートすることができます (Type Box の下向き矢印をクリックすると、サブ カテゴリを種類から別のフィルタへ変更することができます)。

ワールド アウトライナーでアクタを選択した状態で、レベル ビューポート内をナビゲート中に F キーを押すと、選択中のアクタが フォーカス できる位置にカメラを移動します。

シーン内でのアクタの配置については、「ワールド アウトライナー」を参照してください。

エディタでのアクタ検索にはワールド アウトライナー使うことができますが、ブループリントでアクタを見つけて修正できるようにするにはどうすれば良いでしょうか? 以下のガイドでは、必要に応じてアクセスおよび修正できる様々な基準でシーン内のアクタ検索を行う方法を紹介します。

実装ガイド

プロジェクトのセットアップ

このチュートリアルでは、 Get All Actors of Class ノードを使用し、レベル内のアクタを見つけます。このノードを呼び出すと、指定したクラスのレベル内のすべてのアクタが取得され、 配列 に格納されます。続いて、その配列からフィルタの条件に基づいて単一または複数のアクタを取得できます。さらに、それらアクタのプロパティにアクセスしたり、実現したい機能に基づいていくつかの方法によってプロパティを変更したりすることができます。

  1. まず、 [New (新規)] > [Games (ゲーム)] > [ThirdPerson (サードパーソン)] > [Blueprint (ブループリント)] プロジェクトを [With Starter Content (スターターコンテンツ有り)] で作成し、「FindingActors」という名前にします。

image alt text

  1. [Edit (編集)] > [Project Settings (プロジェクト設定)] > [Engine (エンジン)] > [Input (入力)] > [Bindings (バインディング)] > [Action Mappings (アクション マッピング)] の順に移動し、 [Add (追加) (+)] をクリックして「FindActorPressed」という名前の新しいアクション マッピングを作成し、その キー値1 に設定します。

image alt text

ブループリントの FireEffect アクタを作成する

Starter Content」フォルダには、完成した FireEffect アクタが用意されており、このアクタにはフレーム エフェクトを表示する Particle コンポーネント と、サウンド エフェクト用の Audio コンポーネント が含まれています。このアクタは、Get All Actors of Class ノードから検索するベース アクタ クラスとして使用します。

  1. [Content (コンテンツ)] > [StarterContent (スターター コンテンツ)] > [Blueprints (ブループリント)] に移動し、 Blueprint_Effect_Fire のインスタンスをワールドにドラッグします。

image alt text

サードパーソン キャラクター:FindingActor 押下時のイベントを設定する

  1. Content」 > 「ThirdPersonBp」 > 「Blueprints」フォルダの順に移動し、 ThirdPersonCharacter をダブルクリックしてその [Class Defaults (クラスのデフォルト)] を開きます。

image alt text

  1. イベント グラフ を右クリックし、 [Actions (アクション)] メニューから FindActorPressed アクションのキー イベントを検索します。

image alt text

  1. FindActorPressed ノードのキー イベントから Pressed ピンを引き出し、 [Actions] メニュー から Get All Actors Of Class ノードを検索します。

image alt text

  1. Get All Actors of Class ノード内で [Actor Class (アクタ クラス)] をクリックし、ドロップダウン メニューから Blueprint_Effect_Fire クラスを選択します。

image alt text

  1. Out Actors ピンを引き出し、 [Actions] メニューで ForEachLoop を検索します。

image alt text

  1. Get All Actors Of Class ノードの Execution ピンを引き出し、 For Each Loop ノードの Exec ピンに接続します。

image alt text

  1. ForEachLoop ノードから Array Element ピンを引き出し、 [Actions] メニューで Get P_Fire を検索します。

image alt text

  1. Array Element ピンを引き出し、 [Actions] メニューで Get Fire Audio を検索します。

image alt text

  1. P Fire ピンを引き出し、 [Actions] メニューで Deactivate ノードを検索します。

image alt text

  1. Fire Audio ピンを引き出し、 Deactivate ノードの Target ピンに接続します。

image alt text

  1. [Compile (コンパイル)][Save (保存)] を順にクリックします。

image alt text

完成したブループリント

image alt text

最終結果

  1. ツールバー に移動し、 [Play (プレイ)] (PIE) をクリックします。

image alt text

数字キーの 1 を押すと、Fire エフェクトのパーティクルが消去され、オーディオ コンポーネントから流れるサウンド エフェクトが再生されなくなります。

image alt text

タグを使用して特定のアクタを取得する

Get All Actors of Class ノードを使用し、特定のクラスのアクタの配列を取得しました。しかし、さまざまな条件に基づいて配列の結果をフィルタし、アクタの タグ を使用することで、その配列から特定の複数のアクタや単一のアクタを取得することもできます。次に例を示します。

  1. [Content (コンテンツ)] > [StarterContent (スターター コンテンツ)] > [Blueprints (ブループリント)] に移動して Blueprint_Effect_Fire を選択します。

image alt text

  1. [Details (詳細)] パネルで、 [Tags (タグ)] セクションに移動し、 [Add (追加)] (+) をクリックしてアクタにタグを追加します。

image alt text

  1. 0 の要素フィールドで、テキスト文字列として「FindActorTag」を入力します。

image alt text

  1. MyCharacter ブループリント内で ForEachLoopArray Element ピンを引き出し、 [Actions] メニューで Get Tags を検索します。

image alt text

  1. Tags ピンを引き出し、 [Actions] メニューで Get ノードを検索します。

image alt text

上記の FindActorTag として設定したインデックス 0 のタグをここで取得します。

  1. グラフ内を 右クリック し、 [Actions] メニューで Branch ノードを検索します。

image alt text

  1. Branch ノードの Condition ピンを引き出し、 Actor Has Tag ノードを追加します。

image alt text

  1. Get ノードの out ピンを Actor Has Tag ノードの Tag ピンに接続します。

image alt text

  1. ForEachLoop ノードの Array Element ピンを Actor Has Tag ノードの Target ピンに接続します。

image alt text

  1. ForEachLoopArray Element ピンを 2 回引き出し、 P_Fire ノードと Fire Audio ノードに接続し、それらを Deactivate ノードに接続します。

image alt text

  1. [Compile (コンパイル)][Save (保存)] を順にクリックします。

image alt text

  1. レベル ビューポート からいずれかの Blueprint_FireEffect を選択し、 [Details] パネル から Tags 変数に移動します。[FindActorTag] フィールドを見つけて ドロップダウン メニュー を開き、 [Delete (削除)] を選択してタグ変数を削除します。

image alt text

ここではその機能を示すため、Fire エフェクトの 1 つは意図的にタグ付けしないままにしています。

  1. ツールバー に移動し、 [Play (プレイ)] (PIE) を押します。

image alt text

最終結果

数字キーの 1 を押すと、ActorsToFindTag を持つすべての Bluprint_Fire_ Effect パーティクルが消去される一方で、タグがない Fire エフェクトはそのままになります。

image alt text

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる