ModuleAnimationComponent
根据策划需求,同时结合现有的MainUIAnimationComponent,实现BaseUIModule及其子BaseUIPanel下的UI动效
Lua代码
- BaseModuleAnimationComponent.lua
- DefaultModuleAnimationComponent.lua
- OpenServerModuleAnimationComponent.lua
- ModuleAnimationCache.lua
预览
通用Module的FullScreenTabbarItem以及顶部的货币栏和关闭按钮会有一个渐显以及位移的动效动画,同时Module的内容也会渐显出现(包括子Panel的特定二级按钮)
具体表现看背包界面动效
使用方式
确认需求
首先要看当前开发的功能模块(Module)的需求是不是需要搭载通用动效,目前通用动效分为两类,分别是使用了BaseFullPanel/BaseFullPanelNoTab/CopyBossModule(或使用了BossModule同款底板)这些预制体的ModuleAnimationType.Default
以及使用了开服活动同款底板的ModuleAnimationType.OpenServer
目前只有这两种UI模式的功能模块需要添加UI动效
创建
如果一个BaseUIModule要加动效,要在该Module的OnCreateDelayFinished()中调用self:AddAnimationComponent()
如果有以及页签,也需要调用self:AddTabbarAnimation(),参数是module的tabbar类实例,参考PackModule.lua
function M:OnCreateDelayFinished()
-- do something
self:AddAnimationComponent()
self:AddTabbarAnimation(self:GetChildPanel("tabbar"))
end
如果Module的子Panel挂载有需要播放动效的二级按钮,见如下图
则在其Panel的OnCreateDelay()中调用self:AddModuleBtnAnimation(moduleType, btn),参考RoleInfoEquipPanel.lua
function P:OnCreateDelayFinished(params)
-- do something
self:AddModuleBtnAnimation(NM.md.pack, self.view.btnFashion)
end
第一个参数是所属父模块的module类型,第二个是btn本身
需要注意,模块所使用的预制体不是BaseFullPanel或者BaseFullPanelNoTab,而是自己拼的预制体,其结构要保证与BaseFullPanel 相同(可以去代码中查看动效需要哪些Component和节点结构,参考DefaultModuleAnimationComponent.lua),包括某些节点要 挂载CanvasGroup组件,否则某些动效不会播放
调用
在Module的OnShowFinished()的末尾代码块位置调用self:PlayShowAnimation()
建议在进行完页签的显隐以及数据之后播放动画,保证播放动画的时候页签的数据以及显示正常
销毁
在Module的OnDestroyBefore()中调用self:DestroyAnimationComponent()即可