項目用的是xlua 採用自定義加載方式php
使用File去讀取路徑下的文件,lua文件原本放在了StreamingAssets路徑下程序員
PC運行無問題,發佈安卓後,竟然提示路徑不存在。c#
查了下資料後發現,File的這種操做方式沒法在安卓平臺去讀取StreamingAssets路徑下的文件,見鬼框架
這個路徑只能用來AssetBundle.LoadFromFile來進行操做函數
資料參考:http://www.xuanyusong.com/archives/4033優化
若是真的想用File這種方式來讀取的話,那麼就不要把文件放在StreamingAssets路徑下了ui
只能把lua放在Application.persistentDataPath; 這個路徑下,我仍是手動拷貝到安卓上的,確實能夠作到再安卓上能夠看見這個文件加密
(我在模擬器上面找到了這個路徑,在小米手機上竟然沒有找到這個路徑 = = )lua
這種能夠製做手機上的自定義腳本遊戲,感受不錯。spa
後來的解決方案是,把lua加上txt後綴,而後ab打包放在StreamingAssets路徑下,就能夠用AssetBundle.LoadFromFile來進行操做了
【代碼】
1 void RequireLua(string name) { 2 TextAsset luaCode = bundle.Load(name, typeof(TextAsset)) as TextAsset; 3 lua.DoString(luaCode.text); 4 }
感受不錯,比個人要方便,以前用的大奧的那個lua框架,不是很好用,關鍵是沒理解他的那種寫法,那麼我能夠去借鑑上面代碼的寫法
【其餘參考資料】
Unity中的Path對應各平臺中的Path :http://www.manew.com/forum.php?mod=viewthread&tid=21404&extra=page%3D1%26filter%3Dtypeid%26typeid%3D143
【可能會用到的再度優化】保留.lua後綴名,將lua文件打包成assetbundle:http://blog.csdn.net/musicseli/article/details/46415075
【檢測更新,AB加密】Unity手遊之路<十二>手遊資源熱更新策略探討:http://blog.csdn.net/janeky/article/details/17666409
【Unity資源處理機制(Assets/WWW/AssetBundle/...)讀取和加載資源方式詳解】:http://blog.csdn.net/swj524152416/article/details/54022282
============================================================================10月9日更新=========================================================================================
把lua打包成assetbundle,此時注意後綴爲lua還沒法打包
xlua寫成 .lua.txt才能夠打包
不過寫成了這樣後,lua腳本中的require關鍵字裏面引用的路徑在ab中就沒啥用了,此時讓lua去調用c#中的自定義加載lua方法來加載lua,以此達到require的目的
值得注意的是,以前個人代碼裏面寫的是一當require的話會自動調用其構造函數,這個是不容許的,須要改下,讓其不去調用構造函數