模块管理

场景层次结构

场景层次结构
  • WindowConstant.lua 通过每个模块在构建的时候传入对应的样式
--[[
    用于模块显示的配置,这里定义样式,在模块创建的时候传入BaseView,如果这里的样式不满足要求,可以新增
    key 自定义 在ctor 方法中需要传
    IsOnly: 是否在当前层次唯一,打开会关闭其他所有模块,除了需要保留的(IsKepp = true),默认false
    IsKeep: 是否在当前层中保留,可以在关闭其他层次保留,比如聊天界面,默认false
    IsCanRepeat: 是否可以重复弹出,某些界面需要重复弹出的时候,比如当前ddt 的空间界面,默认false
    PrefabPath: 对应的prefab 路径 

    保留想法:
    IsGlobalOnly 是否全局唯一,关闭其他所有模块
    IsCache:是否缓存
    IsDespose: 是否在关闭后销毁
]]
WindowConstant.ShowConfig = {
    FixedDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.FixedLayer},
    PopUpDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.PopUpLayer},
    DialogDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = true,LayerType = WindowConstant.LayerType.DialogLayer},
    TipDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.TipLayer},
    FloatDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.FloatLayer},
    GuideDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.GuideLayer},
    LoadingDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.LoadingLayer},
    MaxDefault = {IsOnly = false,IsKeep = false,IsCanRepeat = false,LayerType = WindowConstant.LayerType.MaxTopLayer},
}

return WindowConstant
  • MainCityView.lua 举例 ,需要传入prefab 的路径和弹出的样式 默认PopUpDefault
local MainCityView = class("MainCityView", BaseView)

function MainCityView:ctor()
    MainCityView.super.ctor(self,"Prefabs/UI/Module/MainCity/MainCity.prefab",Module.WindowConstant.ShowConfig.FixedDefault)
end

function MainCityView:onEnter()
    self.PetBtn.onClick:AddListener(function()
        WindowManager:OpenModule(Module.BagView)
        WindowManager:OpenModule(Module.PetView)
    end)
end

return MainCityView
  • windowManager.lua 模块管理,提供了主要接口和接口参数的描述


    image.png

打开模块接口
WindowManager:OpenModule(Module.BagView)
关闭模块接口,有三种方式
WindowManager:CloseModule(Module.BagView)
WindowManager:CloseModule(self)
WindowManager:CloseModule("BagView")

你可能感兴趣的:(模块管理)