| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- local UIHelper = {}
- function UIHelper:OpenUI(scriptPath)
- print("UIHelper:OpenUI -> " .. scriptPath)
- local luaRoot = CS.UnityEngine.GameObject.Find("LuaRoot")
- assert(luaRoot ~= nil)
- local uiScriptHolder = luaRoot.transform:Find("uiScriptHolder")
- if not uiScriptHolder then
- uiScriptHolder = CS.UnityEngine.GameObject("uiScriptHolder")
- uiScriptHolder.transform:SetParent(luaRoot.transform)
- end
- local uiController = require(scriptPath)
- local Utils = require("Base/Utils.lua")
- local scriptName = Utils:GetScriptNameByScriptPath(scriptPath)
- local scriptGameObject = CS.UnityEngine.GameObject(scriptName)
- scriptGameObject.transform:SetParent(uiScriptHolder.transform)
- CS.SFramework.SLuaComponent.Add(scriptGameObject, uiController, scriptPath)
- return uiController
- end
- function UIHelper:CloseUI(scriptPath)
- print("UIHelper:CloseUI -> " .. scriptPath)
- local Utils = require("Base/Utils.lua")
- local scriptName = Utils:GetScriptNameByScriptPath(scriptPath)
- local go = CS.UnityEngine.GameObject.Find("LuaRoot/uiScriptHolder/" .. scriptName)
- CS.UnityEngine.GameObject.Destroy(go)
- end
- function UIHelper:SwitchUI(dstUIControllerPath, srcUIControllerPath)
- UIHelper:OpenUI(dstUIControllerPath)
- UIHelper:CloseUI(srcUIControllerPath)
- end
- function UIHelper:AddClickEvent(rootPanel, buttonPath, clickFunc)
- print(string.format("UIHelper:AddClickEvent rootPanel.name:%s buttonPath:%s clickFunc:%s", rootPanel.name, buttonPath, clickFunc))
- local buttonGameObject = rootPanel.transform:Find(buttonPath).gameObject
- buttonGameObject:GetComponent("Button").onClick:AddListener(clickFunc)
- end
- function UIHelper:AddSliderEvent(rootPanel, sliderPath, valueChangeFunc)
- print(string.format("UIHelper:AddSliderEvent rootPanel.name:%s buttonPath:%s clickFunc:%s", rootPanel.name, sliderPath, valueChangeFunc))
- local sliderGameObject = rootPanel.transform:Find(sliderPath).gameObject
- sliderGameObject:GetComponent("Slider").onValueChanged:AddListener(valueChangeFunc)
- end
- function UIHelper:AddToggleEvent(rootPanel, togglePath, valueChangeFunc)
- print(string.format("UIHelper:AddToggleEvent rootPanel.name:%s buttonPath:%s toggleChangeFunc:%s", rootPanel.name, togglePath, valueChangeFunc))
- local toggleGameObject = rootPanel.transform:Find(togglePath).gameObject
- toggleGameObject:GetComponent("Toggle").onValueChanged:AddListener(valueChangeFunc)
- end
- function UIHelper:SetTextInfo(rootPanel, textPath, textInfo)
- print(string.format("UIHelper:SetTextInfo rootPanel.name:%s buttonPath:%s textInfo:%s", rootPanel.name, textPath, textInfo))
- local textGameObject = rootPanel.transform:Find(textPath).gameObject
- textGameObject:GetComponent("Text").text = textInfo
- end
- function UIHelper:LoadSprite(rootPanel, resourcePath, spriteName)
- print(string.format("UIHelper:LoadSprite rootPanel.name:%s resourcePath:%s spriteName:%s", rootPanel.name, resourcePath, spriteName))
- local texture2D = CS.SFramework.SResourceManager.LoadResource(resourcePath)
- local skillSprite = CS.UnityEngine.Sprite.Create(texture2D, CS.UnityEngine.Rect(0,0,texture2D.width, texture2D.height), CS.UnityEngine.Vector2.zero)
- skillSprite.name = spriteName
- rootPanel.transform:GetComponent("Image").sprite = skillSprite
- end
- function UIHelper:IsPointerOverGameObject(mousePos)
- -- local eventSystem = CS.UnityEngine.EventSystems.EventSystem
- -- local eventData = CS.UnityEngine.EventSystems.PointerEventData(eventSystem.current)
- -- eventData.position = mousePos
- -- local listRaycast = CS.System.Collections.Generic.List(CS.UnityEngine.EventSystems.RaycastResult)()
- -- eventSystem.current:RaycastAll(eventData, listRaycast)
- local eventSystem = CS.UnityEngine.EventSystems.EventSystem
- local eventData = CS.UnityEngine.EventSystems.PointerEventData(eventSystem.current)
- local RaycastInCanvas = CS.UnityEngine.GameObject.Find("Canvas"):GetComponent("GraphicRaycaster")
- eventData.pressPosition = CS.UnityEngine.Input.mousePosition
- eventData.position = CS.UnityEngine.Input.mousePosition
- local listRaycast = CS.System.Collections.Generic.List(CS.UnityEngine.EventSystems.RaycastResult)()
- RaycastInCanvas:Raycast(eventData, listRaycast)
- local bTouchUI = false
- if listRaycast.Count ~= 0 then
- for _, list in pairs(listRaycast) do
- print("----> list.name", list.gameObject.name)
- end
- -- local rawImageRootPanel = require("UI/ZUIPanelPlayerMove.lua").rootPanel
- -- local rawImage = rawImageRootPanel.transform:Find("RawImage").gameObject
- -- local firstRaycast = listRaycast[0].gameObject
- -- bTouchUI = rawImage.name ~= firstRaycast.name
- local firstRaycast = listRaycast[0].gameObject
- bTouchUI = firstRaycast.name == "RawImage"
- end
- return bTouchUI
- end
- function UIHelper:SetButtonInteractable(rootPanel, buttonPath, bEnable)
- local button = rootPanel.transform:Find(buttonPath).gameObject
- button:GetComponent("Button").interactable = bEnable
- end
- return UIHelper
|