【问题标题】:Spawn actor from class in Unreal Engine using Python使用 Python 从虚幻引擎中的类生成actor
【发布时间】:2019-08-24 10:30:00
【问题描述】:

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

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')

我错过了什么?

【问题讨论】:

    标签: python scripting unreal-engine4 unreal-blueprint


    【解决方案1】:

    我不确定您是否使用 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 版

    【讨论】:

    • 感谢 20tab 版本。我使用 UE 内置插件。
    【解决方案2】:

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

    unreal.EditorLevelLibrary().spawn_actor_from_class(ue.StaticMeshActor.static_class(), location, rot)
    

    【讨论】:

      猜你喜欢
      • 2020-07-15
      • 2019-01-13
      • 2020-09-14
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2019-07-16
      • 2018-09-12
      • 2022-06-19
      相关资源
      最近更新 更多