unity發佈安卓lua路徑不存在問題

項目用的是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 在移動平臺中,文件操做路徑詳解:http://blog.csdn.net/huang9012/article/details/44308743

Unity中的Path對應各平臺中的Path :http://www.manew.com/forum.php?mod=viewthread&tid=21404&extra=page%3D1%26filter%3Dtypeid%26typeid%3D143

優秀程序員的博客有哪些?:https://www.zhihu.com/question/19934502

【可能會用到的再度優化】保留.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的話會自動調用其構造函數,這個是不容許的,須要改下,讓其不去調用構造函數

相關文章
相關標籤/搜索