Spawn актер из класса в Unreal Engine с использованием Python - PullRequest
2 голосов
/ 03 апреля 2019

Используя Blueprint, я могу SpawnActorFromClass с StaticMeshActor, но со скриптом Python через встроенный плагин Python Script,

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

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Понял это сам.Оказывается, что .spawn_actor_from_class() вызов не принимает ue.Class.Вместо этого он получает так называемый ClassProperty, полученный из встроенных типов.Поэтому правильный вызов должен быть:

unreal.EditorLevelLibrary().spawn_actor_from_class(ue.StaticMeshActor.static_class(), location, rot)
0 голосов
/ 03 апреля 2019

Я не уверен, используете ли вы плагин Python 20tab или нет, но вы можете сделать это довольно легко из консоли редактора или даже во время выполнения, используя следующий пример кода

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

...