このページでは、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 |
操作する |
functionName |
指定した |
parameters |
関数に渡すパラメータを定義するオブジェクト。
関数が受け取るすべてのパラメータに、このオブジェクトのプロパティを含める必要はありません。省略したパラメータについては、Web Remote Control システムによって、適切なタイプのデフォルトのオブジェクトが作成されます。 |
generateTransaction |
プロジェクトのトランザクション履歴にこの関数呼び出しを記録するかどうかを定義します。このプロパティを
|
この呼び出しでは、呼び出した関数の戻り値と、関数の定義で指定されているその他の出力パラメータを含む JSON ペイロードが返されます。
例
リクエスト ボディ:
{
"objectPath" : "/Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.CubeMesh_5",
"functionName" :"SetActorLocation",
"parameters" : {
"NewLocation" : {"X" :100, "Y" :0, "Z" :30}, // These values are used to create a new Vector
"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 |
操作する |
property |
読み取るまたは変更するプロパティの名前。 |
access |
プロパティへのアクセス リクエストの種類を定義します。これは次のいずれかの値になります。
|
propertyValue |
これは、各フィールドの名前が |
呼び出しは、リクエストした情報または書き込みリクエストの結果を含む 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 ステータスが返されます。

PUT remote/search/assets
このエンドポイントは、アセット レジストリのアセットの検索に使用します。
このエンドポイントを呼び出す場合は、次のプロパティを設定した JSON ペイロードを渡す必要があります。
プロパティ | 説明 |
---|---|
Query | アセット名で一致するテキスト。このフィールドをブランクにすると、文字列はすべての結果を返します。 |
Filter | 次の省略可能のプロパティを使用して、要求されたアセットをフィルタリングする方法を指定する JSON オブジェクト:
|
呼び出しは、リクエストした情報を含む 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 (アンドゥ操作の履歴)] パネルでこのオブジェクトのパスを確認できます。
-
パネルの右下にあるフィルター アイコンをクリックし、 [Show transactions details. (トランザクションの詳細を表示する)] チェック ボックスをオンにします。
-
アクセスするアセットまたはアクタに何かしら軽微な変更を加えます。たとえば、アクタの場所を移動すると、 [Undo History (元に戻す操作の履歴)] に新しいトランザクションが記録されます。
-
[Transaction Details (トランザクションの詳細)] パネルで、 [Modified objects and properties (編集されたオブジェクトとプロパティ) 列のエントリにマウス カーソルを重ねます。ハイライトされたオブジェクトへのパスが、ツールヒントに表示されます。
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()
デコレータがもつクラスの名前です。