C# 通过Unity引用python脚本

C# 通过Unity引用python脚本,c#,python,numpy,unity3d,tensorflow,C#,Python,Numpy,Unity3d,Tensorflow,所以我对这个主题做了一些研究,结果发现Unity有一个Python解释器,但我只对在我的项目中使用Python作为快速计算步骤感兴趣 长话短说,我希望能够在Python脚本中输入一个数字数组,并在协同程序或更新函数中获得一个数字数组 性能是关键,因为我计划用Python使用TensorFlow和Numpy进行矩阵计算。有没有办法做到这一点并至少保持其大部分效率 另外,我还想在以后构建一个Android/iOS设备。我要求太多了吗 提前谢谢 我还想稍后构建一个Android/iOS设备,我是否要求

所以我对这个主题做了一些研究,结果发现Unity有一个Python解释器,但我只对在我的项目中使用Python作为快速计算步骤感兴趣

长话短说,我希望能够在Python脚本中输入一个数字数组,并在协同程序或更新函数中获得一个数字数组

性能是关键,因为我计划用Python使用TensorFlow和Numpy进行矩阵计算。有没有办法做到这一点并至少保持其大部分效率

另外,我还想在以后构建一个Android/iOS设备。我要求太多了吗

提前谢谢

我还想稍后构建一个Android/iOS设备,我是否要求太多

是的,因为您希望使用python实现这一点,并且还希望支持许多平台

你必须使用C++来代替Python,这不是语言偏好。这是关于让代码在Unity支持的大多数平台上运行,因为您已经放弃了iOS和Android。Unity支持在C++中编写和编译的本地插件。对于Python来说,情况并非如此,但您可以让Python在Windows上工作。你不能在iOS、Android和WebGL上使用


也是用C++编写的,所以用C++所需的函数编写插件包装器,您就可以在几乎任何平台Unity支持下运行它。如果您关心性能,最好修改传递给本机函数的数组,而不是返回新数组。为了将数组从C到C++,请参阅POST。p> 与c#scriptHey相比,这种转换文件可能会对您的性能造成更大的损害,而不是您从几秒钟内获得的收益!回答得很好。我只对你的答案有一个问题:最好是把你传递给原生函数的数组修改而不是返回新数组,结果你在这里所说的基本上是我应该在两种语言中使用相同的数组(引用),而不是在C++中重新创建对象,然后再在C语言中重新创建对象。如果你不想修改,你甚至不必修改你发送给C++的数据。还可以将另一个数组从C作为参数,以C++作为第二个参数,第二个数组将存储C++插件所给出的结果。如果不这样做,你需要在C++中创建一个数组,然后在C中创建另一个数组,然后从C++复制到C++,最后实现C++函数来释放数组。一堆不必要的昂贵的东西,但我见过有人这样做。我们的目标是避免在C++端分配数组,因为您需要手动复制和释放它,这是一个很好的建议。如果我在C++中释放它们,而不是试图把它们带到C++,那我就可以在C++中创建一堆其他对象(连接到我将在代码中执行的实际进程),这并不重要,在C++中创建对象是正常的。只需使用

new
关键字即可,但请确保稍后将其释放,否则只会将内存泄漏添加到游戏中。通常,您创建对象并返回为指向C++的指针。存储指向
IntPtr
的指针。当您需要销毁它时,将 ItpTrt/Cuff>传递到使用“代码>删除//Cord>”关键字的C++端释放它。例如,请参阅文章。要开始使用插件,请参阅。