ershierdu
10.74D
V2EX  ›  问与答

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

  •  
  •   ershierdu · Jan 6, 2021 · 1454 views
    This topic created in 2052 days ago, the information mentioned may be changed or developed.

    背景

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

    流程

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

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

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

    思路

    目前我能想到的做法:

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

    问题

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

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

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

    Supplement 1  ·  Jan 8, 2021
    最后用 socket 的方法,效率还是可以接受的,谢谢大家~
    2 replies    2021-01-07 09:37:32 +08:00
    black11black
        1
    black11black  
       Jan 6, 2021 via Android
    收藏一波,等答案。socket 通信的话延迟大概是 lz 不希望看到的,windows 系统中数量级大概在毫秒,任务多了还可能增加,似乎不是很合适
    BingoXuan
        2
    BingoXuan  
       Jan 7, 2021 via Android
    用 Redis 做个简单队列也是可以的。最简单的就是 socket,本机 socket 延时肯定没有楼上说的那么高
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:15 · PVG 05:15 · LAX 14:15 · JFK 17:15
    ♥ Do have faith in what you're doing.