Unity + Python 環(huán)境搭建
興趣轉(zhuǎn)移到了研究 Shader,找了各種資料,人手推薦馮大佬的《Unity Shader 入門精要》。在我還是一只菜雞的情況下,完全做不到各種?shading?language?切換自如,當然是大佬用啥我用啥。我同事痛心疾首質(zhì)問我為何不去學(xué) Unreal Engine 時我的回答。
背景
在:
-> “創(chuàng)建 GameObject 并重命名”
->?“創(chuàng)建 Material 并重命名”
-> “創(chuàng)建 Shader 并重命名”
-> “把 Shader 指給 Material”
-> “把 Material 賦給 GameObject”?
重復(fù)了三遍之后,作為一名Pipeline TD,根本就不能忍了,必須搞個工具一鍵完成上述步驟。
搜索 “Unity 插件開發(fā)”,emmm,C#?JavaScript?Boo?
C# 是不可能的,這輩子都不會去學(xué) C# 的。
JS 嘛,想想我那 ugly 的前端代碼,還是算了。
Boo 你是什么鬼?
這是瞧不起我大 Python 嗎?
抱著試試看的心態(tài)搜索“Unity Python”,嚯!看我發(fā)現(xiàn)了什么,Unity 官方支持Python了
https://docs.unity3d.com/Packages/com.unity.scripting.python@2.0/manual/
讀完文檔非常興奮,這是官方專門為媒體娛樂行業(yè)(當然包括影視后期啦)無縫對接 Pipeline 量身打造,哇哦!簡直就是在艾特我!蒼蠅搓手中......但,額,怎么開始啊??
官方你敢把文檔寫全嗎?能別把環(huán)境搭建藏在論壇的犄角旮旯里嗎?浪費了大好青春終于拼湊出來......
https://forum.unity.com/threads/introducing-python-for-unity-editor.812748/
注意
Unity 版本必須 2019.3 及以上
Python 僅支持 2.7,并需要自行安裝
Windows 的話系統(tǒng)要求是Win 10,?1803 以及以上
目前(2020/03/28)并不支持 Python 3,是考慮到影視后期行業(yè)目前還是大規(guī)模的 Python 2.7,且換 Python 3 喊了幾年都沒動靜的事實上做的決定,但 Python 3的支持已經(jīng)安排上了。如果你的電腦安裝了Python 3,請將其從 PATH?中移除,否則可能會引起 Unity 崩潰。
安裝
找到你工程中的 .../Packages/mainifest.json文件,在?dependencies?中加上 "com.unity.scripting.python": "2.0.1-preview.2",
你的 Unity 軟件chua chua chua 就開始安裝然后安裝好了。
在菜單 Edit > Project Settings 中左欄就可以看到 Python for Unity 項,在頁面中會顯示當前的各種版本信息以及識別到你系統(tǒng)里的 Python
確定都沒問題了昂。
Hello World - 1
Unity 中有兩種執(zhí)行 Python的方式,這不得不說跟達芬奇的尿性一模一樣。
一種可以直接在軟件內(nèi),開啟 Python Console,就可以直接敲代碼,臟亂差的工作都已經(jīng)自動做好了,適合無需界面無需存儲狀態(tài)的工具,以及就是想先測試核心代碼。
目前這個里面編輯器相當簡陋,無代碼高亮、補全,甚至最基本的代碼寫錯了,都不會有報錯提示的......
先試一下:執(zhí)行菜單 Windows > General > Python Console,在下面的那個文本框中輸入
import UnityEngine
print 'Hello World'
UnityEngine.Debug.Log('Hello World')
然后點擊?Excute?即可看到輸出框中輸出了"Hello World"。

這里跟行業(yè)其他 DCC 軟件的 Script Editor 非常像,比如,ctrl + enter 即可執(zhí)行全部代碼;選中部分代碼,然后 ctrl+ enter 即可執(zhí)行選中的代碼。
Hello World - 2
第二種方式,適合搞起復(fù)雜工具,花哨 PySide 界面的那種,運行于 Unity 之外的。原理跟達芬奇的一樣,啟動 Unity 的時候,會悄咪咪啟動一個子進程服務(wù)監(jiān)聽,然后你跟他通信這樣。
我本人使用 PyCharm 作為主 IDE,所以就以它為例,為啥不用 VS Code? 因為我 PyCharm 是花錢買的。
新建一個工程,并且在 Project Structure 中添加 .../Library/PackageCache/com.unity.scripting.python@2.0.1-preview.2/Python/site-packages 這個路徑,其實就是將 Unity 相關(guān)的模塊加到 PYTHONPATH 的意思。
新建一個文件,輸入以下內(nèi)容,然后運行
service = unity_client.UnityClientService()
connect = unity_client.connect(service)
geo = service.UnityEngine.GameObject.CreatePrimitive(service.UnityEngine.PrimitiveType.Cylinder)
geo.name = "myCylinder"
# connect.close()
即可看到 Unity 場景中創(chuàng)建了個名字叫 myCylinder 的 Cylinder。
此時 Python 并沒有退出,如果你想執(zhí)行完就拍拍屁股走人,把上述最后一行去掉 # 即可,這里不展開說這是咋回事兒了。
今天作為一個環(huán)境搭建說明,已經(jīng)夠了,后續(xù)如何添加菜單,如何讓Unity 去通知你的代碼等等有機會再說。
這里有我的示例代碼:https://github.com/muyr/hello_unity
文檔
Python API 的文檔何在?
抱歉現(xiàn)在沒有,感覺將來也不會有......它完全是 C# API 的移植,所以,你就去參考 C# 的 API 文檔吧,

B站專欄不適合寫有代碼的技術(shù)文章,我精心排版的?Markdown?優(yōu)雅卷面完全沒了,還是需要放簡書一份。
歡迎關(guān)注我的公眾號“真的起名無力”
