ugui中toggle.isOn的一個坑


准備知識

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM