Lua的TableViewItem

来源:互联网 发布:徐州网络跳骚市场 编辑:程序博客网 时间:2024/06/14 10:54

1.看TableViewItem.cs脚本,写了SetIndex,Updata,OnDestroy,所以子类Lua要实现此方法
2.ComeHerItem.lua中,定义类名表,itemTable={},尽量使用GetInstanceID()

ComeHerItem = { }local this = ComeHerItem;-- 保存所有节点内同{instanceId={numberTxt=编号,idTxt=徒弟id,nameTxt=徒弟名,getAwardButton=领取状态}....}this.itemTable = { }     function ComeHerItem.Awake(gameObject)    local instanceId = gameObject:GetInstanceID();    if (this.itemTable[instanceId] == nil) then        local numberTxt = gameObject.transform:Find("NumberTxt"):GetComponent("Text");        local idTxt = gameObject.transform:Find("IDTxt"):GetComponent("Text");        local nameTxt = gameObject.transform:Find("NameTxt"):GetComponent("Text");        local getAWardButton = gameObject.transform:Find("GetAWardButton"):GetComponent("Button");        getAWardButton.onClick:AddListener(LuaHelper.LuaFunToUnityAction(bindParam(this.RecourdButtonEvent, getAWardButton)))        this.itemTable[instanceId] = { numberTxt = numberTxt, idTxt = idTxt, nameTxt = nameTxt, getAWardButton = getAWardButton }    endend   function ComeHerItem.SetIndex(gameObject, index)    local instanceId = gameObject:GetInstanceID();    this.itemTable[instanceId].index = indexendfunction ComeHerItem.Updata(gameObject, data)    if (data == nil) then        return    end    local instanceId = gameObject:GetInstanceID();    this.itemTable[instanceId].data = data    this.itemTable[instanceId].numberTxt.text = tostring(data.index)    this.itemTable[instanceId].idTxt.text = tostring(data.idTxt)    this.itemTable[instanceId].nameTxt.text = data.nameText       if (data.isGetState == 0) then        this.itemTable[instanceId].getAWardButton.interactable = true;    else        this.itemTable[instanceId].getAWardButton.interactable = false;    endendfunction ComeHerItem.RecourdButtonEvent(btnGameObject)    local btnInstanceId = btnGameObject:GetInstanceID();    local itemData = nil--通过遍历去得到.记得break    for instance, item in pairs(this.itemTable) do        if (item.getAWardButton:GetInstanceID() == btnInstanceId) then            itemData = item.data            Debugger.Log("--1-pack=" .. itemData.userId .. "-bei=" .. itemData.idTxt)            break        end    end        local package = Msg_pb.GetRewardC2S()    package.tuijianid = itemData.userId    package.beituijianid = itemData.idTxt;     NetUtil.SendBuff(SocketType.HALL,MsgNoC2S.C2S_HALL_GETREWARD,0,package)     endfunction ComeHerItem.OnDestroy(gameObject)    local instanceId = gameObject:GetInstanceID();    this.itemTable[instanceId] = nilend
原创粉丝点击