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
本文介绍了一个具体的Lua脚本实现Unity UI组件功能的例子。该脚本定义了ComeHerItem类,用于处理UI元素的初始化、更新及销毁等操作,并通过实例ID管理每个UI元素的数据。此外,还实现了点击事件监听器,用以发送请求到服务器。

600

被折叠的 条评论
为什么被折叠?



