1. 程式人生 > >Lua中常見遇到的問題解決方案

Lua中常見遇到的問題解決方案

require "uiDefine"

報錯資訊:module 'uiDefine' not found:

no fieldpackage.preload['uiDefine']

no such builtin lib'uiDefine'

解決方法: 在require "ui.uiDefine" 在基於lua根目錄的下require全路徑,例如Assets/Scripts/lua為根目錄

static public class UnityCommonExtension

{

static public void DestroyAllChildren(this GameObject target)

           {

       foreach (Transform child in target.transform)

       {

            GameObject.Destroy(child.gameObject);

       }

    }

}

for i = 1, #headIconParent do

                   headIconParent[i]:DestroyAllChildren()

End

         如果

public static class LuaGenConfig

{

   //lua中要使用到C#庫的配置,比如C#標準庫,或者UnityAPI,第三方庫等。

   [LuaCallCSharp

]

   public static List<TypeLuaCallCSharp = new List<Type>()

{

//typeof(UnityCommonExtension),

}

}

報錯資訊: attemptto call a nil value (method 'DestroyAllChildren')

解決方法:

for i = 1, #headIconParent do

                   CS.UnityCommonExtension.DestroyAllChildren(headIconParent[i])

End

或者 LuaGenConfig新增上,然後用 

headIconParent[i]:DestroyAllChildren()

或 headIconParent[i].DestroyAllChildren(headIconParent[i])即可

for i = 1, pairs(headIconParent) do end

報錯資訊:'for'limit must be a number

解決方法:用 for i= 1, #headIconParent do end

而for k, v pairs(headIconParent) do end 也可以

C# 的陣列傳到lua裡,

local widgets = {}--go:GetComponentsInChildren("UIWidget",true)    

           local widArr =InterfaceForLua.GetWidgetArray(go)

           for i = 0, widArr.Length - 1 do

             table.insert(widgets, widArr[i])

           end

但是c#的list傳到lua裡就不能被識別。

如果定義的是方法,要寫function()#### end, 否則不寫會執行呼叫的函式,而不是傳進去的方法。

定義的 lua方法,:定義:呼叫,.定義.呼叫 , :也用在c#靜態方法的呼叫,省去self

function UIItemIconInfo:CreateItemIcon(itemNum, parent, uniqueName)

         local go =ResUtil.LoadGameObject("UI/CommonIcon/ItemIconInfoLua")

    local script = {}

         setmetatable(script,{__index = UIItemIconInfo}

script.gameObject = go

    script.Data = itemNum

         script.eName =uniqueName

         script:InitEvent()

    script:awake()

    script:onBindComplete()

script:start()

    if parent ~= nil then

     parent:AddChildEx(go.transform)

    end

    go.name =string.format("Item%s", tostring(itemNum.ItemId))

    if parent ~= nil andparent:GetComponent("UIWidget") ~= nil then

      local parentDepth =parent:GetComponent("UIWidget").depth

      local widgets = {}   localwidArr = InterfaceForLua.GetWidgetArray(go)

           for i = 0, widArr.Length - 1 do

             table.insert(widgets, widArr[i])

           end

           for k in pairs(widgets) do

                   widgets[k].depth= widgets[k].depth + parentDepth

           end

    end

         return script

end

function UIItemIconInfo:onBindComplete()

  self:SetMask(false)

  self:ItemIconCanClick(true)

 self:AddDragScrollView(false, nil)

 self:SetItemIconScale(Vector3.one)

 self:SetBackGroundVisable(true, true)

         self:SetSelectHide(true)

end

function UIItemIconInfo:SetMask(bVis)

  Mask:SetActive(bVis)

End

self 與單例的使用

這些就是lua單例的使用方法

local widgets = {}

local widArr = InterfaceForLua.GetWidgetArray(go) –這個是c#傳過來的UIWidget[]

logError(typeof(widgets).."  "..typeof(widArr))  --  table  userdata

--widgets = widArr  --如果能成功,表相等,是引用,一個改另一個跟著改

         table.insert(widgets,widArr) --如果能成功,表insert,是獨立的表

報錯資訊:attemptto get length of a userdata value

解決方法:遍歷userdata,進行插入表

for i = 0, widArr.Length - 1 do

         table.insert(widgets,widArr[i])

end

---------for迴圈

for i = 1, #widgets do

widgets[i].depth = widgets[i].depth + parentDepth

end

for k in pairs(widgets) do

print(k)

         widgets[k].depth = widgets[k].depth +parentDepth

end

-------這兩個一樣的作用

local widArr = InterfaceForLua.GetWidgetArray(go)  加入local 變數  widArr.Length獲取長度 5.2之前table.getn

LuaException: ui.CommonIcon.UIItemIconInfoLua:157: attempt toperform arithmetic on a nil value (field 'depth')

stack traceback:

         ui.CommonIcon.UIItemIconInfoLua:157:in field 'CreateItemIcon'

解決方法:

LuaException: c# exception:Non-static method requires atarget.,stack:  atSystem.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlagsinvokeAttr, System.Reflection.Binder binder, System.Object[] parameters,System.Globalization.CultureInfo culture) [0x000fe] in/Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:236

  atSystem.Reflection.MethodBase.Invoke (System.Object obj, System.Object[]parameters) [0x00000] in/Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115

  atXLua.OverloadMethodWrap.Call (IntPtr L) [0x00151] inE:\redemption\project\client\redemptionV2\Assets\XLua\Src\MethodWarpsCache.cs:220

  at XLua.MethodWrap.Call(IntPtr L) [0x00036] inE:\redemption\project\client\redemptionV2\Assets\XLua\Src\MethodWarpsCache.cs:260

stack traceback:

         [C]: in field'SetActive'

解決方法:'SetActive'不是static方法,要用:訪問

UIItemIconInfo script = go:GetComponent('UIItemIconInfo')

報錯資訊:syntax error near 'script'

解決方法:宣告為local即可

go.transform.localScale =CS.UnityEngine.Vector3(0.7f, 0.7f, 0.7f) (lua中沒有new)

報錯資訊:malformed number near '0.7f'

解決方法:把f去掉,lua沒有integer和float型別之分,數值都是用number型別表示的,

attempt to perform arithmetic on a stringvalue

stack traceback:

解決方案:這個寫成的c#的語法了,把+ 變成.. 例如print("AAAAAAAAbbb: " + tostring(Data.Reward.Count))

LuaException: error loading modulecoruntine_test from resource, coruntine_test.lua:29: syntax error near 'local'

stack traceback:

         [C]:in ?

         [C]:in function 'require'

         [string"chunk"]:1: in main chunk

解決方法:29行呼叫到地方檢查,就到了require 的地方,比如檢查 = 號賦值

LuaException: [string"LuaBehaviour"]:32: attempt to index a thread value (global 'co')

stack traceback:

         [string"LuaBehaviour"]:32: in function <[string"LuaBehaviour"]:22>

XLua.LuaEnv.ThrowExceptionFromError (Int32oldTop) (at Assets/XLua/Src/LuaEnv.cs:411)

XLuaGenDelegateImpl0.Invoke7(UnityEngine.GameObject go)

UIEventListener.OnClick () (atAssets/NGUI/Scripts/Internal/UIEventListener.cs:53)

解決方法:直接呼叫 lua 的協程報錯, 然後用包裝 Unity 協程 的方法解決

table.getn()提示 attempt to call a nil value (field'getn')

解決方法:Usethe length operator #asin #foo.

table.getnwasdeprecated in 5.1 and removed in 5.2.

functiontable.getn(x) local ret for i in pairs(x) do ret=ret+1 end return ret end

InvalidCastException: This interface mustadd to CSharpCallLua: UIItemIconInfo+myInter

XLua.CodeEmit.EmitInterfaceImpl(System.Type to_be_impl) (at Assets/ThirdParty/XLua/Src/CodeEmit.cs:349)

XLua.ObjectTranslator.CreateInterfaceBridge(IntPtr L, System.Type interfaceType, Int32 idx) (atAssets/ThirdParty/XLua/Src/ObjectTranslator.cs:436)

XLua.ObjectCasters+<genCaster>c__AnonStorey0.<>m__2(IntPtr L, Int32 idx, System.Object target) (atAssets/ThirdParty/XLua/Src/ObjectCasters.cs:447)

XLua.ObjectTranslator.GetObject (IntPtr L,Int32 index, System.Type type) (atAssets/ThirdParty/XLua/Src/ObjectTranslator.cs:656)

XLua.ObjectTranslator.Get[myInter] (IntPtrL, Int32 index, myInter& v) (atAssets/ThirdParty/XLua/Src/ObjectTranslator.cs:669)

解決方法:加上[CSharpCallLua]

LuaException:assets/bundles//lua/logicBase/GenerateLuaData.lua:6: attempt to index a nilvalue (global 'GenerateLuaData')

stack traceback:

         assets/bundles//lua/logicBase/GenerateLuaData.lua:6:in main chunk

         [C]:in function 'require'

         assets/bundles//lua/logicBase/EnterLua.lua:4:in main chunk

         [C]:in function 'require'

         E:/redemptionV2_XLua/Assets/LuaFramework/Lua/Main.lua:2:in main chunk

         [C]:in function 'require'

         [string"chunk"]:1: in main chunk

XLua.LuaEnv.ThrowExceptionFromError (Int32oldTop) (at Assets/ThirdParty/XLua/Src/LuaEnv.cs:411)

XLua.LuaEnv.DoString (System.String chunk,System.String chunkName, XLua.LuaTable env) (atAssets/ThirdParty/XLua/Src/LuaEnv.cs:248)

LuaFramework.LuaManager.StartMain () (atAssets/LuaFramework/Scripts/Manager/LuaManager.cs:52)

LuaFramework.LuaManager.InitStart () (atAssets/LuaFramework/Scripts/Manager/LuaManager.cs:21)

LuaFramework.GameManager.OnInitialize ()(at Assets/LuaFramework/Scripts/Manager/GameManager.cs:252)

LuaFramework.GameManager.OnResourceInited() (at Assets/LuaFramework/Scripts/Manager/GameManager.cs:247)

LuaFramework.GameManager+<OnUpdateResource>c__Iterator1.MoveNext() (at Assets/LuaFramework/Scripts/Manager/GameManager.cs:133)

UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress) (atC:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)

LuaFramework.GameManager:CheckExtractResource()(at Assets/LuaFramework/Scripts/Manager/GameManager.cs:58)

(轉)Cisco Systems, Inc. VPN使用過程常見問題解決方案

一、Error 56: The Cisco Systems, Inc. VPN Service has not been started 在使用思科vpn的時候,啟動vpn的時候,經常遇到“Error 56: The Cisco Systems, Inc. VPN Ser

Lua常見遇到的問題解決方案

require "uiDefine"報錯資訊:module 'uiDefine' not found:no fieldpackage.preload['uiDefine']no such builtin lib'uiDefine'解決方法: 在require "ui.uiDe

配置Hibernate常見錯誤解決方案

配置hibernate中的錯誤解決方案: 1.配置檔案格式 Exception in thread "main" org.hibernate.HibernateException: Error accessing stax stream at

JAVA異常基本知識及異常在Spring框架的整體解決方案

我們 程序 details 編譯錯誤 htm 及其 arch extends exception 異常的頂級父類是Throwable,下面有兩個子類Exception和Error。 Error錯誤一般是虛擬機相關的問題,如系統崩潰,虛擬機錯誤等,應用程序無法處理,直接導致

Ubuntu 搭建svn服務器 ,以及常見錯誤解決方案

mkdir creat mod 服務 csdn 解決 details 守護 center 一、安裝命令: 1)以root身份登錄。執行:sudo su -命令 2)執行安裝命令:apt-get install subversion 二、創建項目目錄 1)mkdir /

Elasticsearch 5常見問題解決方案

elasticsearch-head elasticsearch grunt node bootstrap npm 安裝運行1、前置安裝java8jdk-8u112-linux-x64.rpm下載地址:http://www.oracle.com/technetwork/java/jav

負載均衡集群的session解決方案

集群 負載均衡 解決方案 前言在我們給Web站點使用負載均衡之後,必須面臨的一個重要問題就是Session的處理辦法,無論是PHP、Python、Ruby還是Java,只要使用服務器保存Session,在做負載均衡時都需要考慮Session的問題。分享目錄:問題在哪裏?如何處理?會話保持(案例:N

docker之常見問題&解決方案

docker常見問題Docker 問題積累1. 使用Dockerfile構建鏡像時報錯2. Docker時區問題 3. 啟動Docker進程失敗–Centos7.X4. docker啟動失敗5. Docker啟動失敗–ubuntu 6. docker pull鏡像失敗 http://blog.csdn.net

大數據常見錯誤解決方案(轉載)

nvi clu linux腳本 /etc/ var fin remove -c 技術 1、用./bin/spark-shell啟動spark時遇到異常:java.net.BindException: Can‘t assign requested address

RecyclerView常見問題解決方案,RecyclerView嵌套自動滾動,RecyclerView 高度設置wrap_content 無作用等問題

design card ont mpi 焦點 goods rap rfi 高度 1,ScrollView或者RecyclerView1 嵌套RecyclerView2 進入頁面自動跳轉到recyclerView2上面頁面會自動滾動 貌似是RecyclerVie

eclipse常見問題解決方案

tool 解決方法 ini文件 工作區 ali error mylyn 你會 效果 1、maven項目,啟動報錯ClassNotFoundException,原因是tomcat下\WEB-INF\classes目錄中,java文件沒有編譯成class文件。解決方法:

富文本編輯器內容在微信小程序展示的解決方案

tco 後臺 實現 sign oot cti sele 編輯器 post 最近在做商品詳情的時候,有這樣一個需求:用戶可以使用富文本編輯器編輯商品,並且在小程序中可以展示。然鵝,小程序並不支持HTML標簽,webview組件也只能加載URL,這就捉雞

LoadRunner接口HTTP請求中文亂碼解決方案

空格 con value 發送 nbsp toe string ner 字符串 今天項目經理要求壓一下實時代扣接口性能。那就開始寫腳本,腳本寫好調試發現接口請求參數姓名輸入中文亂碼。接著就網上找資料解決該問題。 1:想法:將中文轉成UTF-8,lr_convert_stri

raid陣列常見故障解決方案分享

分享 無法 操作系統 完整備份 raid磁盤陣列 常見故障 磁盤 數據存儲 href Raid磁盤陣列是一種將多塊物理硬盤整合成一個虛擬存儲的技術,raid模塊相當於一個存儲管理中間層,上層接收並執行操作系統及文件系統的數據讀寫指令,下層管理數據在各個物理硬盤上的存儲及讀寫

Spring Bean迴圈依賴解決方案

在迴圈依賴是指在A中引用B,B中引用C,而C中引用A,容器建立物件時會出現死迴圈。相關解決方案如下: 1 選擇其一使其延遲載入,然後從上下文中獲取AService型別的bean即可。 現有AService 和BService,都在對方bean中注入,導致初始化時迴圈初始報錯,解決方案就是

ADB常見問題解決方案

1.AndroidStudio 安裝apk 失敗提示已經存在了 提示已經存在 1.檢視Android裝置中是否存在相同報名的應用,如果存在解除安裝掉 2.手機-》開發者選項-》USB安裝是否已開啟 2.usb連線裝置後,adb devices無法顯示裝置 電腦上安裝豌豆

Centos7常見問題解決方案

variable pos 才會 rac blog unknown indent cin lov 1,在Centos7中用MariaDB代替了mysql數據庫 ,2,mysql報錯:/usr/sbin/mysqld:unknown variable ‘default-char

Centos7常見問題解決方案 mysql報錯:/usr/sbin/mysqld:unknown variable 'default-character-set=utf8'

1,在Centos7中用MariaDB代替了mysql資料庫 ,2,mysql報錯:/usr/sbin/mysqld:unknown variable 'default-character-set=utf8'     修改mysql的字符集時,為了將預設字符集設定為utf-