【问题标题】:Run python script from c# in unity game?在统一游戏中从 c# 运行 python 脚本?
【发布时间】:2020-04-28 22:48:36
【问题描述】:

我正在尝试用一些漂亮的 3D 图形统一创建 nim 游戏。对于那些不知道的人来说,nim 是一个已解决的游戏,这意味着,假设两个玩家都玩得很好,我们可以知道谁会在第一回合获胜。

我想做4种游戏模式:

  1. 两个互相对战的玩家。
  2. 玩家与完美游戏的电脑对战。
  3. 计算机与用户用 python 编写的机器人进行对抗。
  4. 玩家与他用 python 编写的机器人对战。

我在高中的计算机科学课上了解了这个游戏,我们得到了一个练习来编写一个程序来赢得这个游戏的更简单版本。

这就是我想要包含最后两种模式的原因:让学生用 python 编写他们的机器人并在我的游戏中进行测试。我认为它会变得非常酷。

但是,这意味着我需要弄清楚如何从 c# 脚本统一运行 python 脚本。我知道我可以在 c# 中使用Process 来运行外部 python 脚本,但这需要我知道 python 可执行文件的位置。

我可以做一个设置菜单,这样用户就可以在那里设置 python 的路径,但我不喜欢用户必须处理路径设置的事实。

我了解到,在 Windows 上,我可以下载一个包含 python 解释器 (python.exe) 的可嵌入 zip,然后简单地将其与游戏一起发布,这样用户甚至不需要在他们的机器上安装 python。但是,我找不到其他平台的类似 zip,特别是 linux 和 mac。

那么,我的问题是我应该如何统一运行 python 脚本?有没有办法为 windows、mac 和 linux 嵌入 python 解释器,或者我应该制作一个设置菜单来配置 python 路径和使用进程? 如果有人能给我一个关于如何在统一中使用 python 的想法,我真的很感激。

注意:我想使用 python 3 编写脚本,因此仅适用于 python 2 的解决方案对我没有帮助。

提前致谢。

【问题讨论】:

  • 嘿,shai avr,您找到解决方案了吗?一个问题是,如果 Unity 已经有一个解释器,它包含在构建中,它将受 unit'ys 许可协议的约束,因此不能将它用于播放器可编辑脚本

标签: python c# unity3d


【解决方案1】:

你可以使用System.Diagnostics.Process.Start并用它启动cmd

string strCmdText;
strCmdText= "python script.py";
System.Diagnostics.Process.Start("CMD.exe",strCmdText);```

【讨论】:

  • 这仅适用于 Windows。另外,如果用户的 PATH 系统变量中没有 python 会发生什么
  • 根本没想到。也许可以对 windows、mac 和 linux 进行检查以比较操作系统。现在只需要mac和linux的解决方案
【解决方案2】:

只有python 2.7.5,python 3没有功能

Python and Unity

但是如果你只是想使用python作为Bot,我建议你通过TCP(socket)或其他方式进行通信......

【讨论】:

  • 不好。我不能使用python 2。另外我不需要在python中访问统一类,所以也许还有另一种解决方案
  • 仅供参考,C# 只能执行 Python 2.7 版...所以如果 C# 不能在 Python 3 中执行,unity 也不能...
  • 是的,您可以启动进程,它与 c# 中的嵌入式 python(例如 IronPython)不同。但对我来说,最好通过套接字进行通信。或者如果 python 则使用 MemoryShared做这个功能
  • 你能举个例子或参考如何做到吗?我不想为此设置服务器。我希望游戏不需要互联网连接。
猜你喜欢
  • 1970-01-01
  • 2017-03-06
  • 2015-01-18
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
相关资源
最近更新 更多