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