2023-05-18 build Unity Python Scripting

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
    }

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;
            }
        }
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容