Python In Unreal

 

Unreal 锦囊

少见的接口

    // 排序
    // 假如有一个列表
    TArray<FItem> ItemList;
    Algo::SortBy(EntryList, &FItem::ID);
    Algo::SortBy(EntryList, &FItem::SomeField, TGreater<>());

Python

问题: 如何在 ue 使用 asyncio 解决: 正常地使用 asyncio loop 会卡住 ue 主线程,需要使用ue本身的tick

def update(delta_seconds):
    try:
        loop = asyncio.get_event_loop()
        if not loop.is_running():
            loop.call_soon(loop.stop)
            loop.run_forever()
    except Exception as e:
        unreal.unregister_slate_post_tick_callback(self.handle)
        raise e

handle = unreal.register_slate_post_tick_callback(update)

问题: 如何在 ue 启用 PyQt 解决: 同样,正常地使用 pyqt 会卡住 ue 主线程,需要使用ue本身的tick

    def main():
        if not QApplication.instance():
            app = QApplication(sys.argv)
        else:
            app = QApplication.instance()

        window = MainWindow()
        window.show()

        return window

    window = MainWindow.main()
    window.setObjectName('EditorWindow')
    unreal.parent_external_window_to_slate(window.winId())