准備知識
toggle:指unity3d引擎中UGUI的 toggle組件 (單選框)
本文示例代碼使用 lua 語言描述
事件觸發
使用unity的ugui,你如果細心觀察會發現toggle在界面或父節點被關閉/隱藏(active=false)之后,toggle的isOn屬性並不會設置為false。
如果你依賴於Toggle的isOn用來觸發事件,那么在下次界面打開時,由於toggle的isOn狀態沒有發生改變,事件就不會觸發。
toggle狀態改變觸發事件:
toggle.onValueChanged:RemoveAllListeners()
toggle.onValueChanged:AddListener(function(isOn)
if (isOn) then
self:RefreshNotice(localData)
end
end)
小技巧
如果你需要每次打開界面都觸發IsOn綁定的事件,那么可以在界面被關閉時,取消Toggle的IsOn屬性
取消toggle示例:
---TODO 請先保存當前界面所有的Toggle組件到self.toggles數組,在關閉時取消isOn屬性
function UIChangePreview:OnClose()
if self.toggles then
for k, v in pairs(self.toggles) do
if v then
v.isOn = false
end
end
end
end