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 }
end
end
function ComeHerItem.SetIndex(gameObject, index)
local instanceId = gameObject:GetInstanceID();
this.itemTable[instanceId].index = index
end
function 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;
end
end
function 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)
end
function ComeHerItem.OnDestroy(gameObject)
local instanceId = gameObject:GetInstanceID();
this.itemTable[instanceId] = nil
end