V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ershierdu
V2EX  ›  问与答

Python 和 Unity 交互,有没有什么比较优雅、高效的方法呢

  •  
  •   ershierdu · 2021-01-06 21:59:15 +08:00 · 970 次点击
    这是一个创建于 1198 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    在 Unity 中搭建了一个模拟场景用于做实验,而我们研究的方法是用 Python 写的(因为库、便捷性、拓展性等因素,没办法切换了),现在希望能实现 Python 代码与 Unity 场景的交互。

    流程

    交互比较简单,Unity 场景中主要是一辆小车,我们希望:

    • Python 模块能实时控制这辆小车,也就是告诉 Unity 模块应该执行什么动作
    • Unity 模块把场景中传感器的读数传给 Python 模块

    P.S. 两个模块在同一台机器上

    思路

    目前我能想到的做法:

    • socket 通信
    • A 模块把信息更新到某个文件中,B 模块去读取

    问题

    最核心的一个因素是效率:

    • 因为问题建模的缘故,Python 模块传给 Unity 模块的指令是帧级别的。也就是说,传送的不是“前行 1 秒”这样的指令,而是每一帧都传一个指令,通知 Unity 这一帧哪些动作是 enable 的,哪一些是 disable 的(相当于我直接把逻辑写在 Unity 的Update()函数里面)
    • 传感器读数的更新也需要做到每一帧都更新一次

    所以想问一下有什么比较优雅的解决方案吗?

    第 1 条附言  ·  2021-01-08 14:03:52 +08:00
    最后用 socket 的方法,效率还是可以接受的,谢谢大家~
    2 条回复    2021-01-07 09:37:32 +08:00
    black11black
        1
    black11black  
       2021-01-06 22:49:24 +08:00 via Android
    收藏一波,等答案。socket 通信的话延迟大概是 lz 不希望看到的,windows 系统中数量级大概在毫秒,任务多了还可能增加,似乎不是很合适
    BingoXuan
        2
    BingoXuan  
       2021-01-07 09:37:32 +08:00 via Android
    用 Redis 做个简单队列也是可以的。最简单的就是 socket,本机 socket 延时肯定没有楼上说的那么高
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1326 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:38 · PVG 07:38 · LAX 16:38 · JFK 19:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.