using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Chiva.Toolkit.Function.NoBorder { public class WindowsSetting : MonoSingleton,IPointerDownHandler,IPointerUpHandler,IPointerExitHandler { /// /// 是否可以拖拽 /// [SerializeField] private bool m_IsDragging; [SerializeField] private Rect m_ScenePosition; /// /// 当前项目正式发布时的产品名称 /// [SerializeField] private string m_ProductName; public bool playOnAwake; bool runBord= false; void Awake() { m_ProductName = Application.productName; if (playOnAwake) { SetBorderModel(true,m_ScenePosition.width,m_ScenePosition.height); } else { WindowsTools.GetCurrentWindowHandle(m_ProductName); } } public void SetBorderModel(bool bord,float width, float height) { CanvasScaler canvasScaler = transform.GetComponent(); if (bord) { if (!string.IsNullOrEmpty(m_ProductName)) { WindowsTools.GetCurrentWindowHandle(m_ProductName); runBord = true; canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize; SetNoBorderModel(width, height); } } else { runBord = false; canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; Screen.SetResolution((int)width, (int)height,true); } } // Update is called once per frame void Update() { if (!runBord) return; if (m_IsDragging == true) { WindowsTools.DragWindow(); } } /// /// 最小化按钮 /// public void OnMinBtnClick() { WindowsTools.SetMinWindows(); } /// /// 设置无边框 /// public void SetNoBorder(float width,float height) { float posX = (Screen.currentResolution.width - width) / 2; float posY = (Screen.currentResolution.height - height) / 2; Rect rect = new Rect(posX, posY, width, height); WindowsTools.SetNoBorderWindow(rect); } /// /// 设置无边框模式 /// public void SetNoBorderModel(float width, float height) { Screen.SetResolution( (int)width, (int)height, false); //等待当前帧完成,然后去除边框 StartCoroutine(WaitNoBorder(width,height)); } /// /// 等待去除边框 /// /// private IEnumerator WaitNoBorder(float width, float height) { yield return new WaitForEndOfFrame(); yield return new WaitForFixedUpdate(); if (!Screen.fullScreen) { SetNoBorder(width,height); } } /// /// 退出 /// public void ShutDownFunction() { Application.Quit(); } #region 内置函数 public void OnPointerDown(PointerEventData eventData) { //m_IsDragging = true; } public void OnPointerExit(PointerEventData eventData) { //m_IsDragging = false; } public void OnPointerUp(PointerEventData eventData) { //m_IsDragging = false; } #endregion } }