1. 程式人生 > >Unity 命令列打包

Unity 命令列打包

在寫文章之前先說下unity已經自帶了視覺化打包,我為什麼要多此一舉進行命令列打包,估計剛接觸unity的小夥伴都會有這樣的疑惑,當你遊戲要釋出到Android平臺你就會知道,需要接不通平臺的sdk,甚至有些平臺還需要改包名。而遊戲從接完平臺sdk,到釋出還需要經過無數次的測試,釋出後甚至還需若干次升級。你要是每次都手動的將每個平臺jar、res等,拷貝到unity Plugins檔案下,然後再去改包名,暫且不說這樣多次操作是多麼的麻煩無聊,關鍵是你要是哪天不小心手殘了,把什麼拷貝錯了或者包名寫錯了忘記改了等等,還特麼的要重來,你能受得了嘛,發火好了,我覺得我受不了,那麼來吧,寫個打包工具吧。奮鬥

  首先在unity的assets檔案下建立Editor資料夾,我們把工具指令碼寫在此處,寫在此處的目的是想在unity選單欄上,建立打包按鍵。這個大家應該都知道吧。我們寫個靜態方法叫buildQQ吧,然後在方法上設定選單[MenuItem("hugeBuild/QQ")],好吧,請原諒我的自戀,居然自稱虎哥。效果出來了,截圖作為真相。(注:使用標頭檔案using UnityEditor;)

        那麼下面我們就該在buildQQ方法中先去執行檔案拷貝了,我們先把不同平臺的jar、res、AndroidManifest.xml,放在Assets/Android/QQ(360、xiaomi)等。當我打包QQ的時候,我們先把Asssets/Plugins/Android目錄下的檔案刪除,然後將Assets/Android/QQ檔案拷貝到Asssets/Plugins/Android下。具體C#檔案操作我就不多說了,太簡單了,網上一搜到處都是。

        等待拷貝完成後,該去解析AndroidManifest.xml中包名了,因為不同平臺包名要求會不同。把獲取到的包名賦值給PlayerSettings.bundleIdentifier。具體方法我在這裡說下吧!程式碼如下:

  1. using System.Xml;

  2. static string getPackage() {

  3. string content = System.IO.File.ReadAllText("Assets/Plugins/AndroidManifest.xml");

  4. XmlDocument xmldoc = new XmlDocument();

  5. xmldoc.LoadXml(content);

  6. XmlElement rootElem = xmldoc.DocumentElement; //獲取根節點

  7. return rootElem.Attributes["package"].Value;

  8. }

        搞定後,設定keystore賬號和密碼。

  1. PlayerSettings.Android.keystoreName = "Assets/xiaohu.keystore";

  2. PlayerSettings.Android.keystorePass = "******";

  3. PlayerSettings.Android.keyaliasName = "huge";

  4. PlayerSettings.Android.keyaliasPass = "******";

         最後呼叫:打包函式 BuildPipeline.BuildPlayer(lsit.ToArray(), "Sample.apk", BuildTarget.Android, BuildOptions.None);等待完成,但是這裡面引數要說明下,第一引數是要打包的場景,第二是打出包的路徑和名稱,第三是編譯的平臺,第四是編譯的選項,一般選擇Node,即可,具體引數詳解到官網檢視api。下面提供一種方法去獲取所有需要打包的場景名稱。

  1. List<string> lsit = new List<string>();

  2. foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) {

  3. if (scene.enabled) {

  4. lsit.Add(scene.path);

  5. }

  6. }

        大功告成!大笑

給大家提供一個加密圖片或者網址付費可見的網站,這樣有好的原始碼可以儲存到網盤然後實現付費下載,也算是一種盈利方法

 http://www.8tupian.com/re.php?u=6733  網頁做的醜不用太在意!