Remote Control API HTTP リファレンス

Remote Control API が提供する HTTP エンドポイントの詳細です。

このページでは、Remote Control API が提供する HTTP エンドポイントについて説明します。また、各エンドポイントを呼び出す際に含める必要がある、メッセージ ボディの形式について詳しく解説します。

GET remote/info

このエンドポイントは、Remote Control API で使用できるすべての HTTP ルートを確認するために使用します。呼び出しは、使用できるすべての HTTP ルートおよび記述を含む JSON ペイロードを返します。

空のリクエスト ボディでリクエストを送信します。リクエストが成功すると、次のレスポンス ボディで 200 ステータスが返されます。

    {
        "HttpRoutes": [
            {
                "Path": "/remote/info",
                "Verb":"Get",
                "Description":"Get information about different routes available on this API."
            },
            {
                "Path": "/remote",
                "Verb":"Options",
                "Description":"Allows cross-origin http requests to the API."
            },
            {
                "Path": "/remote/batch",
                "Verb":"Put",
                "Description":"Allows batching multiple calls into one request."
            }
            ...
        ]
    }

PUT remote/object/call

現在エディタのメモリにある、指定された UObject によって公開される関数を呼び出すには、このエンドポイントを使用します。通常、このオブジェクトは、プロジェクトの現在のレベルまたはアセットのアクタになります。

ブループリントから呼び出せる関数であれば、どの関数でも呼び出すことができます。これには、BlueprintCallable 指定子を使用して C++ で定義されている関数や、完全にブループリントで定義および実装されている関数が含まれます。

このエンドポイントを呼び出す場合は、次のプロパティを設定した JSON ペイロードを渡す必要があります。

プロパティ

説明

objectPath

操作する UObject を一意に識別するパス。このパスを確認する方法の詳細については、「UObject のパスについて」を参照してください。

functionName

指定した UObject から呼び出す関数の名前。関数が C++ で定義されている場合、ブループリントに表示される表示名と元の名前が一致していない可能性があります。その場合は、C++ で定義されている関数名を使用します。

parameters

関数に渡すパラメータを定義するオブジェクト。

  • このオブジェクトの各プロパティの名前は、呼び出す関数が受け取るパラメータの名前である必要があります。

    関数が C++ で定義されている場合、ブループリント エディタに表示される値と元のパラメータ名が一致していない可能性があります。その場合は、C++ で定義されているパラメータ名を使用します。たとえば、以下のコードの 2 番目のパラメータには C++ の定義に合わせて「`bSweep`」を指定する必要がありますが、対応するブループリント ノードは **Sweep** という名前になっています。
  • プロパティの値は数値やブール値など、シンプルな値になることもあれば、オブジェクトを渡す必要がある関数の場合は、そのオブジェクトのプロパティをカプセル化している JSON オブジェクトを指定することもできます。Remote Control システムは、渡された値を使用して、必要な種類の新しいオブジェクトの作成を試みます。たとえば、以下のコードでは、自動的に NewLocation が使用されて、新しいベクターが作成されます。

関数が受け取るすべてのパラメータに、このオブジェクトのプロパティを含める必要はありません。省略したパラメータについては、Web Remote Control システムによって、適切なタイプのデフォルトのオブジェクトが作成されます。

generateTransaction

プロジェクトのトランザクション履歴にこの関数呼び出しを記録するかどうかを定義します。このプロパティを true に設定すると、以下の結果になります。

  • この関数による変更は、元に戻すことが可能になります。このプロジェクトの [Undo History (元に戻す操作の履歴)] パネルに、この関数呼び出しのエントリが記録されます。履歴に記録されると、Unreal Editor で作業しているユーザーは、この変更の影響をロールバックできます。このエントリは、どの関数を呼び出しても、常に、 「Remote Call Transaction Wrap (トランザクション ラップのリモート呼び出し)」 という名前で記録されます。 Remote transactions listed in the Undo History

  • マルチ ユーザー編集 セッションで作業している場合、接続しているその他のユーザーにも変更がレプリケートされます。

この呼び出しでは、呼び出した関数の戻り値と、関数の定義で指定されているその他の出力パラメータを含む JSON ペイロードが返されます。

リクエスト ボディ:

    {
        "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5",
        "functionName" :"SetActorLocation",
        "parameters" : {
            "NewLocation" : {"X" :100, "Y" :0, "Z" :30},   // これらの値は新しいベクターを作成するために使用されます
            "bSweep" : true
        },
        "generateTransaction" : true
    }

リクエストが成功すると、200 ステータスと次のレスポンス ボディが返されます。

    {
        "SweepHitResult":{
            "bBlockingHit":true,
            "bStartPenetrating":false,
            "FaceIndex":-1,
            "Time":0.338644,
            "Distance":170.822,
            "Location":{ "X":100, "Y":0, "Z":429.178 },
            "ImpactPoint":{ "X":169, "Y":30, "Z":354 },
            "Normal":{ "X":-1.51964e-11, "Y":4.01851e-8, "Z":1 },
            "ImpactNormal":{ "X":-1.51964e-11, "Y":4.01851e-8, "Z":1 },
            "TraceStart":{ "X":100, "Y":0, "Z":600 },
            "TraceEnd":{ "X":100, "Y":0, "Z":100 },
            "PenetrationDepth":0,
            "Item":-1,
            "PhysMaterial":"",
            "Actor":"/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Bump_StaticMesh",
            "Component":"/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Bump_StaticMesh.StaticMeshComponent0",
            "BoneName":"None",
            "MyBoneName":"None"
        },
        "ReturnValue":true
    }

ここでは、Engine/Source/Runtime/Engine/Classes/GameFramework/Actor.h ファイルの SetActorLocation() 関数の元の定義で SweepHitResult が出力パラメータとして定義されているため、この値が戻り値に含まれています。つまり、関数呼び出しによって生成されるデータ値への非 const 参照です。

PUT remote/object/property

現在エディタのメモリにある、指定された UObject によって公開されるプロパティの値にアクセスするには、このエンドポイントを使用します。通常、このオブジェクトは、アクタまたはアセットになります。

アクセスしている UObject が C++ クラスのインスタンスの場合、以下の制約に従って、C++ で定義されたすべてのクラスメンバをブループリとへアクセス可能なプロパティとして含みます。

アクセスしている UObject が Blueprint クラスのインスタンスの場合、以下の制約に従って、そのクラスによって所有されたすべてのブループリント変数を含みます。

このエンドポイントは、以下の特定の条件を満たすプロパティにしかアクセスできません。

プロパティが private または protected として定義されていない。private または protected ではない場合があります。 BlueprintGetter 関数または BlueprintSetter 関数が定義されていない。定義されている場合は、remote/object/property エンドポイントを使用して直接値を読み取る、または、書き込むのではなく、前述の remote/object/call エンドポイントとこれらの関数を使用する必要があります。 エディタ内のオブジェクトにアクセスする場合は、プロパティが EditAnywhere に設定されている必要がある。値を変更するには、プロパティが EditConst に設定されていてはなりません。

  • -game モードまたはプレイ イン エディタ (PIE) モードでオブジェクトにアクセスする場合は、オブジェクトが BlueprintVisible に設定されている必要がある。値を変更するには、プロパティが BlueprintReadOnly に設定されていてはなりません。

リクエスト メッセージの作成の仕方に応じて、次のことが可能です。

  • オブジェクトが公開するすべてのプロパティと、その現在の値をリクエストする。

  • 少なくとも読み取りアクセスを提供するプロパティの値をリクエストする。

  • 書き込みアクセスを提供するプロパティの値を設定する。

このエンドポイントを呼び出す場合は、次のプロパティを設定した JSON ペイロードを渡す必要があります。

プロパティ

説明

objectPath

操作する UObject を一意に識別するパス。このパスを確認する方法の詳細については、「UObject のパスについて」を参照してください。

property

読み取るまたは変更するプロパティの名前。READ_ACCESS を設定した呼び出しでこのプロパティを省略した場合、レスポンスでは指定された UObject の読み取り可能プロパティがすべて列挙されます。

access

プロパティへのアクセス リクエストの種類を定義します。これは次のいずれかの値になります。

  • READ_ACCESS。任意のプロパティの現在の値、または、指定した UObject のすべてのプロパティの現在の値をリクエストすることを示します。

  • WRITE_ACCESSpropertyValue オブジェクトで定義している 1 つ以上のプロパティに新しい値を設定することを示します。

  • WRITE_TRANSACTION_ACCESSWRITE_ACCESS と同じですが、プロパティの値の変更をプロジェクトのトランザクション履歴に記録します。これは、remote/object/call エンドポイントの generateTransaction プロパティに似ています。以下のような結果になります。以下のような結果になります。

    • Unreal Editor の [Details (詳細)] パネルで実行された場合とまったく同じように、プロパティの変更が処理されます。その後さらに、このプロパティにリンクされている変更前および変更後イベントを処理するコードが、エディタ内で呼び出される場合があります。

    • マルチ ユーザー編集 セッションで作業している場合、接続しているその他のユーザーにも変更がレプリケートされます。

    • このオプションは、変更を元に戻せるようにします。このプロパティを true に設定すると、このプロジェクトの [Undo History (元に戻す操作の履歴)] パネルに、このプロパティの変更についてエントリが記録されます。履歴に記録されると、Unreal Editor で作業しているユーザーは、この変更の影響をロールバックできます。このエントリは、必ず、 「Remote Set Object Property (オブジェクト プロパティのリモート設定)」 という名前で記録されます。 Remote Set Object Property

propertyValue

WRITE_ACCESS または WRITE_TRANSACTION_ACCESS を設定したリクエストを送る場合は、このオブジェクトを使用して、変更するプロパティと各プロパティに設定する新しい値を指定します。

これは、各フィールドの名前が UObject に指定した書き込み可能プロパティの名前と一致し、各フィールドの値がそのプロパティに設定する新しい値である JSON オブジェクトである必要があります。

呼び出しは、リクエストした情報または書き込みリクエストの結果を含む JSON ペイロードを返します。

すべてのプロジェクトの読み取り

リクエスト ボディ:

    {
        "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5",
        "access" :"READ_ACCESS"
    }

リクエストが成功すると、200 ステータスと次のレスポンス ボディが返されます。

    {
        "bStaticMeshReplicateMovement": false,
        "NavigationGeometryGatheringMode":"Default",
        "PrimaryActorTick": {
            "TickGroup":"TG_PrePhysics",
            "EndTickGroup":"TG_PrePhysics",
            "bTickEvenWhenPaused": false,
            "bCanEverTick": false,
            "bStartWithTickEnabled": true,
            "bAllowTickOnDedicatedServer": true,
            "TickInterval":0
        },
        "bHidden": false,
        "bOnlyRelevantToOwner": false,
        "bAlwaysRelevant": false,
        "bReplicateMovement": false,
        "bNetLoadOnClient": true,
        "bNetUseOwnerRelevancy": false,
        "bRelevantForLevelBounds": true,
        "bReplayRewindable": false,
        "bAllowTickBeforeBeginPlay": false,
        "bBlockInput": false,
        "bCanBeDamaged": false,
        "bFindCameraComponentWhenViewTarget": true,
        "bGenerateOverlapEventsDuringLevelStreaming": false,
        "bIgnoresOriginShifting": false,
        "bEnableAutoLODGeneration": true,
        "bIsEditorOnlyActor": false,
        "ReplicatedMovement": {
            "LinearVelocity": { "X":0, "Y":0, "Z":0 },
            "AngularVelocity": { "X":0, "Y":0, "Z":0 },
            "Location": { "X":0, "Y":0, "Z":0 },
            "Rotation": { "Pitch":0, "Yaw":0, "Roll":0 },
            "bSimulatedPhysicSleep": false,
            "bRepPhysics": false,
            "LocationQuantizationLevel":"RoundWholeNumber",
            "VelocityQuantizationLevel":"RoundWholeNumber",
            "RotationQuantizationLevel":"ByteComponents"
        },
        "InitialLifeSpan":0,
        "NetDormancy":"DORM_Awake",
        "SpawnCollisionHandlingMethod":"AlwaysSpawn",
        "AutoReceiveInput":"Disabled",
        "InputPriority":0,
        "NetCullDistanceSquared":2.25e+08,
        "NetUpdateFrequency":100,
        "MinNetUpdateFrequency":2,
        "NetPriority":1,
        "SpriteScale":1,
        "Tags": []
    }

単一のプロパティの読み取り

リクエスト ボディ:

    {
        "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5.StaticMeshComponent0",
        "property" :"StreamingDistanceMultiplier",
        "access" :"READ_ACCESS",
    }

リクエストが成功すると、200 ステータスと次のレスポンス ボディが返されます。

    {
        "StreamingDistanceMultiplier":1
    }

プロパティの書き込み

リクエスト ボディ:

    {
        "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5.StaticMeshComponent0",
        "access" :"WRITE_ACCESS",
        "propertyName" :"StreamingDistanceMultiplier",
        "propertyValue" : {
            "StreamingDistanceMultiplier" :2
        }
    }

リクエストが成功すると、空のレスポンス ボディで 200 ステータスが返されます。

PUT remote/object/thumbnail

このエンドポイントは コンテンツ ブラウザ のアセットのサムネイル画像を取得するために使用します。呼び出しは、サムネイルを含む JSON ペイロードを返します。

リクエスト ボディ:

    {
        "objectPath" : "/Game/Mannequin/Animations/ThirdPersonJump_Start.ThirdPersonJump_Start"
    }

リクエストが成功すると、レスポンス ボディでサムネイル画像の 200 ステータスが返されます。

image alt text

PUT remote/search/assets

このエンドポイントは、アセット レジストリのアセットの検索に使用します。

このエンドポイントを呼び出す場合は、次のプロパティを設定した JSON ペイロードを渡す必要があります。

プロパティ

説明

Query

アセット名で一致するテキスト。このフィールドをブランクにすると、文字列はすべての結果を返します。

Filter

次の省略可能のプロパティを使用して、要求されたアセットをフィルタリングする方法を指定する JSON オブジェクト:

  • PackageNames: 完全一致に制限して、指定されたパッケージを検索します。値の形式は文字列配列 (例:["/Game/MyFolder/MyAsset"]) です。

  • ClassNames: 完全一致に制限して、指定されたクラス名を検索します。値の形式は文字列配列です。

  • PackagePaths: 指定されたパスを含むパッケージに検索対象を制限します。たとえば、["/Game/MyFolder"] の場合はアセットパスに "/Game/MyFolder" を含むアセットのみを返します。値の形式は文字列配列です。

  • RecursiveClassesExclusionSet: 一致するクラスの再帰的検索を行う場合、結果から除外するクラスを指定できます。値の形式は文字列配列です。

  • RecursivePaths: PackagePaths で指定されたパスのサブフォルダーを検索するかどうかを指定するブール値。

  • RecursiveClasses: ClassNames で指定されたクラスのサブクラスを参照するかどうかを指定するブール値。

呼び出しは、リクエストした情報を含む JSON ペイロードを返します。

リクエスト ボディ:

    {
        "Query":"Cube",
        "Filter": {
            "PackageNames": [],
            "ClassNames": [],
            "PackagePaths": [],
            "RecursiveClassesExclusionSet": [],
            "RecursivePaths": false,
            "RecursiveClasses": false
        }
    }

リクエストが成功すると、次のレスポンス ボディで 200 ステータスが返されます。

    {
        "Assets": [
            {
                "Name":"CubeMaterial",
                "Class":"Material",
                "Path": "/Game/Geometry/Meshes/CubeMaterial.CubeMaterial"
            },
            {
                "Name":"1M_Cube",
                "Class":"StaticMesh",
                "Path": "/Game/Geometry/Meshes/1M_Cube.1M_Cube"
            },
            {
                "Name":"1M_Cube_Chamfer",
                "Class":"StaticMesh",
                "Path": "/Game/Geometry/Meshes/1M_Cube_Chamfer.1M_Cube_Chamfer"
            }
        ]
    }

PUT remote/object/describe

このエンドポイントは、エディタのメモリにあるすべてのプロパティ、関数、アクタやアセットなどその他の UObject に関するメタデータを表示するために使用します。呼び出しは、リクエストした情報を含む JSON ペイロードを返します。

リクエスト ボディ:

    {
        "objectPath": "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5"
    }

リクエストが成功すると、次のレスポンス ボディで 200 ステータスが返されます。

    {
        "Name":"CubeMesh_5",
        "Class": "/Script/Engine.StaticMeshActor",
        "Properties": [
            {
                "Name":"StaticMeshComponent",
                "Description": "",
                "Type":"UStaticMeshComponent*",
                "ContainerType": "",
                "KeyType": "",
                "Metadata": {}
            },
            {
                "Name":"PrimaryActorTick",
                "Description":"Primary Actor tick function, which calls TickActor().\nTick functions can be configured to control whether ticking is enabled, at what time during a frame the update occurs, and to set up tick dependencies.\n@see https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Engine/FTickFunction/\n@see AddTickPrerequisiteActor(), AddTickPrerequisiteComponent()",
                "Type":"FActorTickFunction",
                "ContainerType": "",
                "KeyType": "",
                "Metadata": {
                    "ToolTip":"Primary Actor tick function, which calls TickActor().\nTick functions can be configured to control whether ticking is enabled, at what time during a frame the update occurs, and to set up tick dependencies.\n@see https://docs.unrealengine.com/latest/INT/API/Runtime/Engine/Engine/FTickFunction/\n@see AddTickPrerequisiteActor(), AddTickPrerequisiteComponent()"
                }
            },
            {
                "Name": "bOnlyRelevantToOwner",
                "Description":"If true, this actor is only relevant to its owner.If this flag is changed during play, all non-owner channels would need to be explicitly closed.",
                "Type": "uint8",
                "ContainerType": "",
                "KeyType": "",
                "Metadata": {
                    "ToolTip":"If true, this actor is only relevant to its owner.If this flag is changed during play, all non-owner channels would need to be explicitly closed."
                }
            },
            ...
        ]
    }

PUT remote/batch

このエンドポイントを使って、複数の HTTP リクエストを単一のリモート コールにグループ化します。実行の順序は、Requests 配列の要素の順番によって決定されます。

Requests 配列の各リクエスト要素は、以下のプロパティを持つ JSON オブジェクトでなければなりません。

リクエスト プロパティ

説明

RequestId

リクエストを対応するレスポンスと照合できる一意の ID。

URL

リクエスト ターゲット (例: /remote/object/describe)。

Verb

HTTP メソッドのオプション (PUT、POST、GET、DELETE)。

Body

サーバーに送信されるデータ。すべてのリクエストにボディがあるわけではありません。

呼び出しは、複数のリクエストに対するレスポンスの配列を含む JSON ペイロードを返します。配列の各要素には以下のプロパティが含まれます。

レスポンス プロパティ

説明

RequestId

リクエストを対応するレスポンスと照合する一意の ID。

ResponseCode

レスポンスのステータス コード。成功のレスポンスはステータス 200 を返します。

ResponseBody

リクエストされたデータを含むペイロード。すべてのレスポンスがレスポンス ボディを持つわけではありません。

リクエスト ボディ:

    {
        "Requests" : [
            {
                "RequestId" :1,
                "URL": "/remote/object/property",
                "Verb" :"PUT",
                "Body": {
                    "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5.StaticMeshComponent0",
                    "propertyName":"StreamingDistanceMultiplier",
                    "access" :"READ_ACCESS"
                }
            },
            {
                "RequestId" :2,
                "URL": "/remote/object/property",
                "Verb" :"PUT",
                "Body": {
                    "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5.StaticMeshComponent0",
                    "propertyName":"StreamingDistanceMultiplier",
                    "propertyValue": {
                        "StreamingDistanceMultiplier" :2
                    },
                    "access" :"WRITE_ACCESS"
                }
            },
            {
                "RequestId" :3,
                "URL": "/remote/object/property",
                "Verb" :"PUT",
                "Body": {
                    "objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5.StaticMeshComponent0",
                    "propertyName":"StreamingDistanceMultiplier",
                    "access" :"READ_ACCESS"
                }
            }
        ]
    }

リクエストが成功すると、各レクエストに対してレスポンスの配列で次のレスポンス ボディが返されます。

    {
        "Responses": [
            {
                "RequestId":1,
                "ResponseCode":200,
                "ResponseBody": {
                    "StreamingDistanceMultiplier":1
                }
            },
            {
                "RequestId":2,
                "ResponseCode":200,
                "ResponseBody": null
            },
            {
                "RequestId":3,
                "ResponseCode":200,
                "ResponseBody": {
                    "StreamingDistanceMultiplier":2
                }
            }
        ]
    }

PUT remote/object/event

このルートは実験的機能です。有効にするには、次のコンソール変数をプロジェクトの DefaultEngine.ini ファイルに追加します。

    [Console Variables]
    WebControl.EnableExperimentalRoutes = 1

このエンドポイントは、オブジェクトのプロパティが変更されたときに更新を受信するなど、オブジェクトの次のイベントを受信するために使用します。イベントが発生するまでルートは戻りません。

現在、以下のイベントがサポートされています。

  • ObjectPropertyChanged

  • PreObjectPropertyChanged

リクエスト ボディ:

    {
        "EventType":"ObjectPropertyChanged",
        "ObjectPath": "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5.StaticMeshComponent0",
        "PropertyName":"StaticMesh"
    }

A successful request will not return until the event has occurred.When the StaticMesh property changes, a response with a 200 status will be returned with the following body:

    {
    "StaticMesh": "/Engine/EditorMeshes/ArcadeEditorSphere.ArcadeEditorSphere"
    }

UObject のパスについて

Unreal Editor がメモリにロードしているアセットとアクタには、それぞれを一意に識別するパスがあります。これらのパスはほとんどがエディタ内部での使用を目的としたものであるため、簡単にアクセスできる方法で直接確認することはできません。また、内部のルールに従ってプログラムによって特定されるため、必ずしも簡単に推測できるものではありません。

通常、これらのオブジェクトのパスは、次の形式になります。

    /path/PackageName.ObjectName:SubObjectName.SubObject

C++ で Unreal Engine を使用している場合は、これは FindObject()StaticFindObject() などの関数が受け取る形式と同じであることがわかるでしょう。

たとえば、前出のリクエストの例にあるアクターのパスを分解する場合、次のようになります。

/Game/ThirdPersonBP/Maps/

コンテンツ ブラウザのアセットへのパス。

ThirdPersonExampleMap.ThirdPersonExampleMap:

パッケージとパッケージに含まれるオブジェクトの名前 (多くのアセットでは、この 2 つは同じ

PersistentLevel.CubeMesh_5.StaticMeshComponent0

操作対象のオブジェクトまでのサブオブジェクト階層のパス。

これらのパスは簡単には参照できませんが、この後のセクションでこれらのパスを確認する方法をいくつか紹介します。

Undo History に表示されるパス

UObject オブジェクトを変更すると、 [Undo History (アンドゥ操作の履歴)] パネルでこのオブジェクトのパスを確認できます。

  1. パネルの右下にあるフィルター アイコンをクリックし、 [Show transactions details. (トランザクションの詳細を表示する)] チェック ボックスをオンにします。

    Show transactions details

  2. アクセスするアセットまたはアクタに何かしら軽微な変更を加えます。たとえば、アクタの場所を移動すると、 [Undo History (元に戻す操作の履歴)] に新しいトランザクションが記録されます。

  3. [Transaction Details (トランザクションの詳細)] パネルで、 [Modified objects and properties (編集されたオブジェクトとプロパティ) 列のエントリにマウス カーソルを重ねます。ハイライトされたオブジェクトへのパスが、ツールヒントに表示されます。

    Object path shown in the Tooltip

Editor Scripting Utilities に表示されるパス

リモートで実行するタスクの種類によっては、Web アプリケーションが、現在のレベルで利用できるアクタのパスや、コンテンツ ブラウザー内にあるアセットのパスを認識できると便利な場合があります。 Editor Scripting Utilities プラグインは、アセットやレベルを操作して、そのようなパスの取得を実現できる便利な関数を公開します。

たとえば、現在のレベルのすべてのアクタのパスの一覧を取得するには、 EditorScriptingUtilities モジュールの EditorLevelLibrary クラスが公開する GetAllLevelActors 関数をリモートで呼び出します。以下のリクエスト ボディを remote/object/call に送信します。

    {
        "objectPath" : "/Script/EditorScriptingUtilities.Default__EditorLevelLibrary",
        "functionName":"GetAllLevelActors"
    }

レスポンス ボディの ReturnValue フィールドに、レベル内のすべてのアクタのパスの配列が保持されています。例:

    {
        "ReturnValue": [
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.LightmassImportanceVolume_0",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.AtmosphericFog_1",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.SkySphereBlueprint",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.SphereReflectionCapture",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.NetworkPlayerStart",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.DocumentationActor1",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Linear_Stair_StaticMesh",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Bump_StaticMesh",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.LeftArm_StaticMesh",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.RightArm_StaticMesh",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Ramp_StaticMesh",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.LightSource_0",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.PostProcessVolume_0",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.SkyLight_0",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Floor_1",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Wall7_4",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Wall9",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Wall10",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.Wall11",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.TextRenderActor_1",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.MyBlueprint_5",
            "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.ThirdPersonCharacter_167"
        ]
    }

Editor Scripting Utilities プラグインの詳細については、「エディタのスクリプティングと自動化」を参照してください。

Play in Editor (PIE) モードの場合、UEDPIE_X_ がマップ名にプレフィックスとして追加されます (X は PIE インスタンス ID)。 最初に返された値を例として使用すると、PIE でのオブジェクト パスは以下になります。

    "objectPath" : "/Game/ThirdPersonBP/Maps/UEDPIE_0_ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.LightmassImportanceVolume_0"

ブループリント関数ライブラリへのパス

カスタム ブループリント関数ライブラリ を静的メソッドでリモートで呼び出すには、UCLASS が維持する唯一のオブジェクトである Class Default Object (CDO) にオブジェクト パスを指定しなければなりません。次のセクションで C++ オブジェクトおよび Python オブジェクトのオブジェクト パスの構築方法を説明します。

C++

C++ の CDO へのオブジェクト パスは以下の形式となります。

    /Script/ModuleName.Default__ClassName

以下は、ModuleName と ClassName の値をブループリント関数ライブラリで探す方法を示した表です。

ModuleName

ModuleName は検索しているクラスを含む DLL の名前です。Visual Studio プロジェクトの中に、モジュールと同じ名前の.build.cs ファイルがあり、これがそのモジュールおよびモジュールの依存関係をビルドすべきか指定します。

ClassName

ClassName は UCLASS マクロがもつクラスの名前です。

Python

Python の CDO へのオブジェクト パスは以下の形式となります。

    /Engine/PythonTypes.Default__ClassName

ClassName は @unreal.uclass() デコレータがもつクラスの名前です。

このページは Unreal Engine の前のバージョン用です。現在リリースされている Unreal Engine 5.3 に対して更新は行われていません。
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル