ulua學習筆記(二):官方資料及問題解決方案


uLua&SimpleFramework入門視頻教程網盤地址

視頻教程地址 http://pan.baidu.com/s/1gd8fG4N
游戲框架地址 https://github.com/jarjin
游戲案例地址 http://www.ulua.org/showcase.html

ulua群里的一些資料,轉過來方面查看

 

ulua學習順序。請根據自身了解的知識入座。 初級:SimpleFramework框架 中級:ulua插件、cstolua 高級:底層庫編譯。 框架的角色定位分為2種, 第一種,對於有框架的大廠,它就是個使用ulua+cstolua的一個比較完整的demo。 第二種,對於沒有框架的同學,可以自己基於它修改、擴展。 wrap就是c#類提供給lua用的接口文件

attempt to index global 'System' (a nil) 剛下載后,需要做兩步操作 (1)Lua/Gen lua wrap files 生成wrap (2)Game/Build Bundle Resource(NGUI版) 生成資源 Game/Build AssetBundles (UGUI版) 生成資源

關於unknow lua error lua文件編碼問題處理 如果lua文件中保護中文注釋等信息,文件保存為utf8-bom,如果怕麻煩干脆把中文去掉,然后保存成utf8即可解決問題。

unprotected error in call to Lua API LuaInterface.LuaException: unprotected error in call to Lua API (Loader file failed: game) 檢查Lua變量是不是少了local關鍵字.或者關掉變量檢查strict.lua,在Golbal.lua中注釋掉require "strict"

mac下編譯工程找不到lua.h辦法 刪除ulua/Source目錄,retry~

ulua底層庫&Mingw編譯工具下載,百度網盤 下載地址:http://pan.baidu.com/s/1gd1Wyx9 ulua已經全部開源,你們可以定制自己需要的庫,mac、ios是luavm,需要xcode6.0以上,安卓需要ndk 8,windows下編譯工具mingw32/64。我是放在

D盤根目錄: 32位:D:\MinGW\x86\msys\1.0\msys.bat 64位:D:\MinGW\x64\msys\1.0\msys.bat 真正的安卓版的編譯文件在這個下面:Source\android\jni

ulua資料位置 NGUI版、UGUI版、WINPHONE版框架地址: http://www.ulua.org/simpleframework.html 最完整的文檔注解:群共享里面SimpleFramework_v0.2.7注解 - 完整版

_luaopen_pack, referenced from: "錯誤 "_luaopen_pack", referenced from: "_lua_tocbuffer", referenced from: 去掉LuaDLL.cs中報錯函數聲明,及其相關報錯代碼即可.

lua關系 ulua -》很早老外基於luainterface做的一個unity版lua綁定 luajit-》一個jit版本的luavm cstolua-》最初基於ulua,現在優化的很棒和ulua關聯已不多的一個基於靜態導出的lua綁定

游戲已經開發到后期,如何接入ulua? (1)活動 (2)計時器(單位秒)驅動lua的update (3)網絡管理留給lua能跟服務器交互的接口(現在未必用得到的)。活動這部分變數最大,很多問題上線前是無法預知的,比如上線如果發生數據

不理想,或者非常火爆,這些情況無法預知,根據這些情況做活動調整,這些很容易有更新需求。而且未必前期都能想到坐進去。運營策划都是要根

據在線運營情況做未知的活動調整。還有一部分我稱之為,程序給自己留的后路,如果絕大部分都是c#的話,很有可能產生上線后產生bug,比如:

新手引導,在什么地方卡住了等。客戶端啟動一個計時器,驅動lua的一個onTimer,在里面根據游戲運行情況,動態調整對游戲的控制。還有就是多

給自己留一個協議的接口給lua備份用。

Unity手游究竟有無必要做代碼熱更新 Unity熱更新的必要性:(開發期)減少手游打包次數,大大縮短開發周期,提升程序調試效率。(運營期)減少大版本更新次數,可以減少用戶流

失,抱怨,提高留存,付費等。

simpleframework 下載運行崩潰辦法 因為開發期不知道大家Unity版本,為了減少錯誤,wrap文件在發布的時候都被clear掉了,所以當大家一開始下載運行的時候,這部分是缺少的,需

要單擊菜單Lua/Gen Lua Wrap Files。另外資源文件也需要根據自己的版本重新生成。操作步驟:(1)單擊菜單Lua/Gen Lua Wrap Files。(2)單擊

Game/Build Bundle Resource。

simpleframework百度網盤下載地址 如果群共享與ulua.org上下載不下來,請到百度網盤備份http://yun.baidu.com/s/1jGzN78q#path=%252FSimpleFramework

GUI 的Prefab損壞解決辦法 把GUI.zip,解壓,,替換.GUI下面的攝像機視野改成everything,Tag 改成 GuiCamera,GUI的所在層 改成default. 估計丟失原因是因為我來回切換

Unity版本所致。用上面辦法解決即可。

手動重新生成wrap文件方法 刪除Source/LuaWrap/下面的cs文件,Base目錄及其下面文件千萬別刪,然后清除報錯代碼即可. 然后單擊Lua/Gen LuaBinding Files生成新的wrap

文件即可

U5不推薦使用NGUI的原因 u5的新格式打包,ngui不支持,作者也不准備修復(讓我高興,自己改),老的打包函數又被標記丟棄,怎么看都有被拋棄的可能,再轉可能就有很

大風險。所以新的項目推薦使用UGUI,框架已經有UGUI+U5新打包版本,地址:http://ulua.org/simpleframework.html 不支持部分:新版assetbundle中的prefab不能有拖拽腳本,NGUI里面哪個組建沒有這個atlas拖拽腳本?沒人自己願意修改每個組建的atlas變成

GameObject吧???

蘋果新政禁止開發者加入檢查更新功能辦法 主要停留在審核期,在服務器設定一個開關,審核期把檢查更新功能關閉,審核期過了,再打開即可。

修改lua代碼調用路徑 如果使用Simpleframework框架的話,lua代碼文件的位置在Util.cs類的LuaPath函數里面指定。

打印不出中文的bug 修改lua.cs, 搜索encoding.default , 改成utf8.

object contains non-primitive or xxx object contains non-primitive or non-blittable data的錯誤,這個是iOS il2cpp運行bug,請參考 http://ulua.org/simpleframework.html

SimpleFramework_v0.2.0 Patch1 補丁進行修改升級。

LuaWrap/xxxWrap.cs does nontain for ‘xx’ Assets/Source/LuaWrap/xxxWrap.cs(218,21): error CS1061: Type `UnityEngine.xxx' does not contain a definition for `xxx' and no

extension method `xxx' of type `UnityEngine.xxx' could be found (are you missing a using directive or an assembly reference?) 編譯

錯誤解決方案:因為unity不同平台版本api各不相同,因此不是特別統一,遇到此問題直接刪除錯誤代碼即可。

ulua(安卓+ios),nlua(windows phone) ulua包含兩種c模式(luajit版+原生luavm版),加之tolua c#提供了直接訪問渠道。所以追求效率的,請選用ulua。但是ulua因為底層使用luajit

,而luajit目前不能在WP平台使用,所以如果ulua支持WP平台需要第二種原生luavm的底層庫。 nlua包含2種模式(KeraLua c版本)(KopiLua c#版本),它支持全平台,因為c版本底層用的原始的luavm(非luajit)。但是缺少tolua c#的支持

,因此效率略低於ulua,但是支持WP平台(其他平台也支持)。

DllNotFoundException: ulua解決方案 (1)將plugins目錄放到最外面,重啟unity。 (2)缺失VC++ 2012 Runtime。 (3)mac運行期,不用選項ios平台。生成真機再選ios。 (4)真機沒有打包libulua.so進包導致,或者模擬器也有些設置不對。打包的時候把libulua.so打包進libs\armeabi-v7a

LuaStudio 調試卡死 控制面板->用戶賬戶->更改用戶賬戶控制設置面板->始終通知 改為從不通知

attempt to index global 'UnityEngine' uaScriptException: [string "define.lua"]:1: attempt to index global 'UnityEngine' (a nil value) 解決:生成wrap文件。

EntryPointNotFoundException: 解決方案 EntryPointNotFoundException:這個類型錯誤不太單一,可選擇下面2中方法解決:(方案1)把除了Assets跟ProjectSettings目錄之外的都刪除掉,

重新打開工程。 (方案2)如果在MAC上,選擇IOS平台,很容易出現,切換到MAC/PC平台基本上就解決了,你不能要求在MAC下一定要運行IOS的動態庫。

LuaStudio,請使用Administrator管理員權限,否則會掛死!!!

lua中用UIButton.current 確定單擊哪個按鈕


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM