一、前言
在使用 Unity 做仿真或可视化时,经常希望:
-
Unity 负责界面和交互
-
Python 负责算法或逻辑处理(特别是设计深度学习和图像处理相关的算法)
本文记录一个最基础、最容易理解的 Unity 与 Python 互通示例(因为博主也是刚入门):
👉 在 Unity 中点击按钮,执行 Python 代码,并在 Unity 中看到结果
非常适合刚接触 Unity + Python 的同学。
二、实现效果
实现的功能非常简单:
-
Unity 场景中设置一个按钮(Button)
-
点击按钮后:
Unity 显示 Hello World
Python 代码被执行
Python 在 Unity Console 中输出信息
三、准备工作
1. Unity 环境
-
Unity 已安装
-
项目中已启用 TextMeshPro
2. Python 环境
-
本机已安装 Python
-
Unity 中启用了 Python 支持(Unity Editor Python)
四、Unity 脚本代码
1. 新建脚本 Test.cs
cs
using UnityEngine;
using TMPro;
using UnityEditor.Scripting.Python;
public class Test : MonoBehaviour
{
public TextMeshProUGUI text;
// 按钮点击时调用
public void OnButtonClick()
{
// 在 Unity UI 中显示文字
if (text != null)
{
text.text = "Hello World";
}
// 调用 Python 代码
PythonRunner.RunString(@"
import UnityEngine
UnityEngine.Debug.Log('Hello World from Python')
");
}
}
说明:
-
OnButtonClick() 是按钮点击时调用的方法
-
TextMeshProUGUI 用于修改界面文字
-
PythonRunner.RunString() 用于在 Unity 中执行 Python 代码
创建方式如下:
在Assets中右键,创建脚本即可(方法不唯一,只是个人感觉这种方式比较直观)。

五、Unity 场景搭建步骤(重点)
1. 创建 UI
在层级窗口中创建如下结构【右键-UI-画布(Canvas)】,然后在Canvas中【右键-UI-按钮】。
最终实现如下结构的建立。
-
Canvas
-
Button
-
Text (TMP)

2. 管理对象
右键 Canvas → 创建空对象

3. 挂载脚本
-
将 Test.cs 拖到 UIManager 上
-
选中 UIManager,在 Inspector 中可以看到 Test (Script)
4. 绑定 Text (TMP)
-
在 Hierarchy(层级选项) 中找到:Text (TMP)
-
把 Text (TMP) 拖到 Test 脚本中的 text 槽里

5. 绑定 Button 点击事件(关键)
- 选中 Button
- 在 Inspector 中找到 Button (脚本)
- 找到 On Click () (鼠标单击())
- 点击 +
- 将 UIManager 拖到对象槽
- 选择函数:Test → OnButtonClick() (因为我们在cs脚本中使用了该函数,也可以使用其他凹函数,大体上意思是一样的。)

六、运行测试
-
点击 ▶ Play
-
点击按钮
可以看到:
-
按钮文字变为 Hello World
-
Unity Console 输出:Hello World from Python
代码正在运行中:

运行结果如下:

说明实验成功!
结语
作者考虑后续可以在此基础上进一步实现语义通信算法:
-
Unity 与 Python 的网络通信
-
Python 执行复杂算法(如 PyTorch)
-
Unity 显示 Python 返回结果
本文先记录一个最简单、可运行的版本,供初学者参考,欢迎大家交流学习。