跳转至

ModuleAnimationComponent

根据策划需求,同时结合现有的MainUIAnimationComponent,实现BaseUIModule及其子BaseUIPanel下的UI动效

Lua代码

  • BaseModuleAnimationComponent.lua
  • DefaultModuleAnimationComponent.lua
  • OpenServerModuleAnimationComponent.lua
  • ModuleAnimationCache.lua

预览

26

27

通用Module的FullScreenTabbarItem以及顶部的货币栏和关闭按钮会有一个渐显以及位移的动效动画,同时Module的内容也会渐显出现(包括子Panel的特定二级按钮)

具体表现看背包界面动效

使用方式

确认需求

首先要看当前开发的功能模块(Module)的需求是不是需要搭载通用动效,目前通用动效分为两类,分别是使用了BaseFullPanel/BaseFullPanelNoTab/CopyBossModule(或使用了BossModule同款底板)这些预制体的ModuleAnimationType.Default

29

28

以及使用了开服活动同款底板的ModuleAnimationType.OpenServer

30

目前只有这两种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挂载有需要播放动效的二级按钮,见如下图

31

则在其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()即可