5

使用蓝图,我可以通过内置的 Python 脚本插件使用 , 但使用 Python 脚本SpawnActorFromClassStaticMeshActor

unreal.EditorLevelLibrary().spawn_actor_from_class(ue.Class(name='StaticMeshActor'), location, rot)

我有:

LogPython: Error: TypeError: EditorLevelLibrary: Failed to convert parameter 'actor_class' when calling function 'EditorLevelLibrary.SpawnActorFromClass' on 'Default__EditorLevelLibrary'
LogPython: Error:   TypeError: NativizeProperty: Cannot nativize 'Class' as 'ActorClass' (ClassProperty)
LogPython: Error:     TypeError: NativizeClass: Cannot nativize 'Class' as 'Class' (allowed Class type: 'Actor')

我错过了什么?

4

2 回答 2

4

这是我自己想出来的。原来,.spawn_actor_from_class()电话不接受ue.Class。相反,它接收所谓ClassProperty的派生自内置类型。所以正确的调用应该是:

unreal.EditorLevelLibrary().spawn_actor_from_class(ue.StaticMeshActor.static_class(), location, rot)
于 2019-04-03T04:07:53.830 回答
2

我不确定您是否使用 20tab 的 Python 插件,但您可以从编辑器控制台中轻松完成此操作,甚至在运行时使用以下代码示例

def spawn(cls):
    ue.editor_deselect_actors()
    obj = ue.get_editor_world().actor_spawn(cls)
    ue.editor_select_actor(obj)
    return obj
__builtins__['spawn'] = spawn # so it's always available in the Py console

该插件可在https://github.com/20tab/UnrealEnginePython免费获得,目前支持至 4.22 版

于 2019-04-03T16:20:56.453 回答