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

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

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

ulua羣裏的一些資料,轉過來方面查看android

 

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

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

關於unknow lua error lua文件編碼問題處理 若是lua文件中保護中文註釋等信息,文件保存爲utf8-bom,若是怕麻煩乾脆把中文去掉,而後保存成utf8便可解決問題。github

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"c#

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

ulua底層庫&Mingw編譯工具下載,百度網盤 下載地址:http://pan.baidu.com/s/1gd1Wyx9 ulua已經所有開源,大家能夠定製本身須要的庫,mac、ios是luavm,須要xcode6.0以上,安卓須要ndk 8,windows下編譯工具mingw32/64。我是放在api

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

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 肯定單擊哪一個按鈕

相關文章
相關標籤/搜索