Python Scripting介紹和使用
Python Scripting 是Unity官方提供的Unity接Python的方案,但是由于懶狗的原因,目前只支持Editor內使用。
Python Scripting主要做了以下幾件事情
1.導入pythonnet
2.自動配置好pythonnet所需的python環(huán)境(win、macos、linux等都需要不同的配置)
3.與unity editor的鏈接,并在editor內創(chuàng)建如圖所示的腳本編輯窗口

腳本編輯
build中使用
要在build中使用pythonnet,主要要做的事情是
- 整一個pythonnet所需的環(huán)境(我是通過安裝python scripting這個包來整的,安裝這個包時unity會創(chuàng)建一個Library\PythonInstall,這里已經(jīng)是集成好的環(huán)境了,我用的就是它,用完之后再把它卸載掉??赡苡胿env直接在StreamingAssets下創(chuàng)建一個虛擬環(huán)境,然后將剩下所需的手動移進去也是可行的)
-
把pythonnet所需的python環(huán)境(不同目標平臺所需的不同)轉移到StreamingAsset里去
示意圖 - 然后修改環(huán)境配置使pythonnet能夠找到其中的所需的PythonPath和PythonDLL
- 接下來就是提取python scripting中你所需的部分,由于看起來簡書不允許卑微的發(fā)200行的代碼,我只能把其中PythonSetting的部分先放上來了
public sealed class PythonSettings : ScriptableObject
{
public static string kDefaultPythonDirectory = Path.Combine(Application.streamingAssetsPath, "PythonInstall");// "Library/PythonInstall";
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
public static string kDefaultPython = kDefaultPythonDirectory + "/python.exe";
#elif UNITY_EDITOR_OSX || UNITY_EDITOR_LINUX
public static string kDefaultPython = kDefaultPythonDirectory + "/bin/python" + PythonRunner.PythonMajorVersion;
#endif
}
- 最終的調用示意,這里開始就可以參考pythonnet的文檔了
public class PythonInit : MonoBehaviour
{
private void Start()
{
PythonRunner.EnsureInitialized();
using (Py.GIL())
{
dynamic sys = Py.Import("sys");
}
}
private void Update()
{
using (Py.GIL())
{
try
{
dynamic t1 = Py.Import("game");
dynamic a = (t1.a);
}
catch (PythonException e)
{
Debug.Log(e);
throw;
}
}
}
}
