# LuaScripts/CommonUtils 目录树 ``` ├─ LuaScripts/CommonUtils │ ├─ DemoLuaScripts -- 所有 Demo 脚本存放位置 │ │ ├─ DemoAll.lua -- 选择 Demo 展示界面 │ │ ├─ DemoMain.lua -- Demo 入口文件 │ │ ├─ DemoMenu.lua -- Demo 选择菜单 │ │ ├─ DemoPage.lua -- Demo 翻页 │ │ ├─ DemoPagePoster.lua -- Demo 翻页轮播 │ │ ├─ DemoProgressor.lua -- Demo 按钮进度条 │ │ ├─ DemoRemoteReturn.lua -- Demo 返回键 │ │ ├─ DemoToast.lua -- Demo 提示 │ │ ├─ DemoUINavigator.lua -- Demo 设置EntryButton │ ├─ Menu -- 选择菜单 │ │ ├─ Menu.lua -- 菜单 具体实现 │ ├─ Page -- 翻页 │ │ ├─ Page.lua -- 翻页 具体实现 │ │ ├─ PageModule.lua -- 翻页 基础模块 │ │ ├─ PagePoster.lua -- 翻页 轮播 │ ├─ Progressor -- 按钮进度条 │ │ ├─ Progressor.lua -- 按钮进度条 具体实现 │ ├─ Toast -- 提示 │ │ ├─ Toast.lua -- 提示 具体实现 │ ├─ UINavigator -- UINavigator │ │ ├─ UINavigator.lua -- UINavigator 具体实现 ``` # ZEventDispatchCenter.lua 事件分发脚本 * 需添加EventType ``` -- COMMON EVENT -- COMMON EVENT COMMON_SET_ENTRY_BUTTON = "COMMON_SET_ENTRY_BUTTON", COMMON_SET_GESTUREINPUT = "COMMON_SET_GESTUREINPUT", COMMON_REMOTE_RETURN = "COMMON_REMOTE_RETURN", COMMON_SELECT_BUTTON = "COMMON_SELECT_BUTTON", COMMON_SELECT_SCROLL = "COMMON_SELECT_SCROLL", COMMON_MENU_CLICK_BUTTON = "COMMON_MENU_CLICK_BUTTON", COMMON_UI_NAVIGATOR_ANIM = "COMMON_UI_NAVIGATOR_ANIM", COMMON_UI_NAVIGATOR_SELECT_MENU = "COMMON_UI_NAVIGATOR_SELECT_MENU", COMMON_UI_NAVIGATOR_SELECT = "COMMON_UI_NAVIGATOR_SELECT", COMMON_UI_PAGE_MODULE_EFFECT = "COMMON_UI_PAGE_MODULE_EFFECT", COMMON_UI_PAGE_MODULE_CHANGE_SHADOW_IMG = "COMMON_UI_PAGE_MODULE_CHANGE_SHADOW_IMG", COMMON_UI_PAGE_MODULE_CHANGE_EFFENT_TYPE = "COMMON_UI_PAGE_MODULE_CHANGE_EFFENT_TYPE", COMMON_UI_PAGE_MODULE_REFRESH_UI = "COMMON_UI_PAGE_MODULE_REFRESH_UI", COMMON_UI_PAGE_CHANGE = "COMMON_UI_PAGE_CHANGE", COMMON_UI_PAGE_PRE = "COMMON_UI_PAGE_PRE", COMMON_UI_PAGE_NEXT = "COMMON_UI_PAGE_NEXT", ``` # UINavigator * 在入口文件 挂载 UINavigator 脚本 ``` require("Base/UIHelper.lua"):OpenUI("CommonUtils/UINavigator/UINavigator.lua") ``` Demo入口文件 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoMain.lua 项目入口文件 : BundleResource/main.lua * 设置 EntryButton: ``` local eventManager = require('Base/ZEventDispatchCenter.lua') eventManager:DispatchEvent(eventManager.EventType.COMMON_SET_ENTRY_BUTTON, gameObject) ``` * 设置选中的Button 不传参数则设置为空 ``` local eventManager = require('Base/ZEventDispatchCenter.lua') eventManager:DispatchEvent(eventManager.EventType.COMMON_UI_NAVIGATOR_SELECT, gameObject/nil) ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoUINavigator.lua # Menu 菜单 * 前期工作 1. Prefab 设置好 Menu 中显示的菜单数量 (单数) 2. Prefab 所有 Menu 中可选的Button 设置 Tag => CommonUtilsMenu * DataRelay.lua 缓存数据 ``` -- COMMON_UTILS MENU ["MENU_SHOW_ITEM_COUNT"] = "MENU_SHOW_ITEM_COUNT", ["MENU_SCROLL"] = "MENU_SCROLL", ``` * 初始化 ``` -- 挂载 Menu 脚本 require("Base/UIHelper.lua"):AddScript(ZUIMenuPanel.gameObject, "CommonUtils/Menu/Menu.lua") -- if you need: require("CommonUtils/Menu/Menu.lua").SetShowItemData(5) -- 设置展示的Menu Item数量(单数) 默认为 3 require("CommonUtils/Menu/Menu.lua").SetMenuScroll() -- 设置鼠标滚轮控制切换选中菜单 ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoMenu.lua # Page 翻页 * EffectType 翻页类型 ``` LeftTop/LeftBottom/RightTop/RightBottom ``` * DataRelay.lua 缓存数据 ``` -- COMMON_UTILS_PAGE ["PAGE_INFO"] = "PAGE_INFO", ``` * 初始化 ``` local tPageInfo = { -- 图片列表 ["tImgPath"] = { "CommonUtils/Textures/Page/page0.png", "CommonUtils/Textures/Page/page1.png", "CommonUtils/Textures/Page/page2.png", "CommonUtils/Textures/Page/page3.png", "CommonUtils/Textures/Page/page4.png", "CommonUtils/Textures/Page/page5.png", }, -- 图片 翻页展示的背景 ["szImgBG"] = "CommonUtils/Textures/Page/P0_Back.png", -- 翻页的阴影 RightToLeft ["szShadowLeft"] = "CommonUtils/Textures/Page/shadow.png", -- 翻页的阴影 LeftToRight ["szShadowRight"] = "CommonUtils/Textures/Page/shadowLTR.png", -- 翻页的阴影 宽度 ["nShadowWidth"] = 50, -- 翻页时长 ["nEffectTime"] = 0.5, -- 左翻动效 类型 ["leftEffectType"] = "LeftBottom", -- 右翻动效 类型 ["rightEffectType"] = "RightBottom" } SetCache("PAGE_INFO", tPageInfo) local pageObj = DemoPage.rootPanel.transform:Find("Page").gameObject local uiHelper = require('Base/UIHelper.lua') local szPagePath = "CommonUtils/Page/Page.lua" uiHelper:AddScript(pageObj, szPagePath) require(szPagePath).Init() ``` * 左右翻页 ``` local eventManager = require('Base/ZEventDispatchCenter.lua') eventManager:DispatchEvent(eventManager.EventType.COMMON_UI_PAGE_PRE) -- 左翻 eventManager:DispatchEvent(eventManager.EventType.COMMON_UI_PAGE_NEXT) -- 右翻 ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoPage.lua # PagePoster 翻页轮播 * Effect 翻页类型 ``` LeftTop/LeftBottom/RightTop/RightBottom ``` * DataRelay.lua 缓存数据 ``` -- COMMON_UTILS_PAGE ["PAGE_INFO"] = "PAGE_INFO", ["PAGE_POSTER_TAG_INFO"] = "PAGE_POSTER_TAG_INFO", ``` * 初始化 ``` local tPageInfo = { ["tImgPath"] = { "CommonUtils/Textures/Page/page0.png", "CommonUtils/Textures/Page/page1.png", "CommonUtils/Textures/Page/page2.png", "CommonUtils/Textures/Page/page3.png", "CommonUtils/Textures/Page/page4.png", "CommonUtils/Textures/Page/page5.png", }, ["szImgBG"] = "CommonUtils/Textures/Page/P0_Back.png", ["szShadowLeft"] = "CommonUtils/Textures/Page/shadow.png", ["szShadowRight"] = "CommonUtils/Textures/Page/shadowLTR.png", ["nShadowWidth"] = 50, ["nEffectTime"] = 0.5, ["leftEffectType"] = "LeftBottom", ["rightEffectType"] = "RightBottom" } local tPagePosterTagInfo = { -- 选中图片 ['szTarget'] = "CommonUtils/Textures/PagePoster/light.png", -- 未选中图片 ['szNoramal'] = "CommonUtils/Textures/PagePoster/normal.png", } SetCache("PAGE_INFO", tPageInfo) SetCache("PAGE_POSTER_TAG_INFO", tPagePosterTagInfo) local pageObj = DemoPagePoster.rootPanel.transform:Find("Poster/Page").gameObject local tagObj = DemoPagePoster.rootPanel.transform:Find("Poster/Tag").gameObject local uiHelper = require('Base/UIHelper.lua') local szPagePath = "CommonUtils/Page/Page.lua" local szPagePosterPath = "CommonUtils/Page/PagePoster.lua" uiHelper:AddScript(pageObj, szPagePath) uiHelper:AddScript(tagObj, szPagePosterPath) require(szPagePath).Init() require(szPagePosterPath).Init() ``` * 左右翻页 ``` local eventManager = require('Base/ZEventDispatchCenter.lua') eventManager:DispatchEvent(eventManager.EventType.COMMON_UI_PAGE_PRE) -- 左翻 eventManager:DispatchEvent(eventManager.EventType.COMMON_UI_PAGE_NEXT) -- 右翻 ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoPagePoster.lua # Progressor 进度条 * DataRelay.lua 缓存数据 根据自己需要设置 * 初始化 ``` require("CommonUtils/Progressor/Progressor.lua").InitDataRelay("PROGRESSOR_DEMO_A") ``` * 设置冷却时间 ``` --[[ nPeriodTime: 冷却时间 单位s szKey: DataRelay.lua 中添加的 Key ]] require("CommonUtils/Progressor/Progressor.lua").SetCooldown(szKey, nPeriodTime) ``` * 进度条更新 ``` --[[ nFillAmount: 当前进度 szKey: DataRelay.lua 中添加的 Key bFill: 进度条填充条件 ProgressorCallbackA: 填充完之后的回调函数 FillProgressor(szKey, bFill, ProgressorCallbackA) ]] -- 初始化 progressorA = require("CommonUtils/Progressor/Progressor.lua"):new()progressorA:SetCooldown(2) -- 使用处 local imgCom = DemoProgressor.rootPanel.transform:Find("Img_D"):GetComponent("Image") imgCom.fillAmount = progressorD:FillProgressor(bFill, ProgressorCallbackD) ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoProgressor.lua # RemoteReturn 返回按键监听 * 事件监听与取消监听 ``` local function RegisterEvent() local eventManager = require('Base/ZEventDispatchCenter.lua') eventManager:RegisterEvent(eventManager.EventType.COMMON_REMOTE_RETURN, RemoteReturn) end local function UnregisterEvent() local eventManager = require('Base/ZEventDispatchCenter.lua') eventManager:UnregisterEvent(eventManager.EventType.COMMON_REMOTE_RETURN, RemoteReturn) end ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoRemoteReturn.lua # Toast 提示 * 触发 ``` local szPath = "CommonUtils/Textures/Toast/prompt.png" -- 提示图片地址 require("CommonUtils/Toast/Toast.lua").ToastInfo(szPath) ``` * Demo 脚本 : BundleResource/LuaScripts/CommonUtils/DemoLuaScripts/DemoToast.lua