背景
時過境遷,這是一篇老文,寫於2019年5月。
在學習最新的unity ecs過程中,以及學習最新的effect 時,在邁出第一步的時候即遭遇一些困難(學習和測試環境搭建不起來,有時候真的很無語),造成了一種“出師未捷,身先死”的趕腳。
實現
經過不斷的嘗試,實驗和總結,總於有了很好的解決方案。
首先描述一下問題
具體問題以 ECS為例,按照官方以及大佬的教程和樣例,
1、無法通過packages manager(國內部分網絡如中國移動寬帶)進行必要的包下載
2、可下載大佬教程例子,但包下載沖突或者api過期無法編譯(初學者直接蒙逼,一聲嘆息!)
問題1的原因,unity 2018版本后推出了Package manager進行自己開源和第三方開源的包和插件的管理(類似.net nuget,又跟風) 大概可以定位到Package manager 用了一種本地代理的技術進行包下載,鑒於國內惡略的網絡環境出現問題也是正常,解決方案 其實就是兩種
a、土豪法,直接給網絡搞定,這個就不用我多說了,土豪都懂得
b、屌絲法 又分為三個方法
1) 直接通過 packages 的mainfast.json配置文件進行包管理,目前github 下載下來的工程基本默認是這種方式,但是還是會出現不好用的情況(其實出現這種問題可以歸結到問題2,這個在問題也是的解決方法中,描述解決方法)
2) 通過直接拷貝packages包的源文件文件夾進行解決,這個也是一些網上的unity新版本學習先行者提出來的,理論可行但是比較麻煩,首先要能正確下載需要的包文件,這個其實倒是不難,但是這種方法總顯得有些麻煩,畢竟不如方法1 來的方便,所以不推薦使用
3) 通過修改 mainfast.json 配置文件進行 package 本地離線配置,進行包管理,實際上解決的方式很暴力,不是網絡下載不了嗎,那我直接使用離線版本行了吧,通過此方法竟然還能帶來一個神奇的副作用,可以直接編譯,debug 包的源代碼了(比如我們要深入學習unity ecs系統就特別happy)。
文后附件,我會提供相關的配置文件和工程源碼有需要的同學自己自行獲取。
問題2 的原因 又分為兩個 1、主要在於unity package manager這種跟風開源的組件包的策略的天生弊端性。
我們聽說過一句話“開源就代表着質量低下”,道理很簡單嗎,如果開源的代碼質量都那么好,干嘛需要商業軟件,商業軟件存在必定有他的道理。那么unity的 package 開源形式本事就存在着預覽版不穩定,然后又加上本身包之間又有依賴關系,如ecs中 enities 又依賴burst ,collection ,job等多個包,本身這些包又是多個小組開發的又都是預覽版,怎么保證這么多現編譯的代碼,再加上本身unity editor又是多版本快速迭代,這些東西加在一起,就變成了一種不可控制的變量了,不出問題都不正常。
2、本身這些包,在預覽版不斷迭代,api 變更很頻繁,如ecs系統 竟然經過了30個版本的迭代(如本文發布的時候竟然是0.0.12-preview30)讓人很蛋疼。照成了很多新手學習之后發現 過了一段時間api就變了,或者看的教程就是非最新版本的包,連下載都不能下載環境的搭建不出來,照成學習半途而廢。
所以這里給的解決方案有3
1、按照問題1 的解決方法,建立一個相對穩定的版本和開發學習環境,(如學習ecs)在這個穩定環境中 將要學習的插件學習好,先不理會官方最新版本的迭代,我們先將知識的精髓學會
2、當你明白了包的精髓(如ecs學習),明白了他的原理以后呢,我們就可以很輕松的調整package manager 包管理器的mainfast.json配置文件,來選擇自己所希望的版本
3、查詢官方文檔,特別是release 版本變更或者是api升級的文檔,修改過時或者被拒絕的api到最新的api,最終跟上unity的快節奏。
