using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
[DisallowMultipleComponent]
|
[RequireComponent(typeof(Canvas))]
|
public class CanvasAddition : MonoBehaviour
|
{
|
[SerializeField]
|
Canvas m_Canvas;
|
public Canvas canvas {
|
get {
|
return this.m_Canvas ?? (this.m_Canvas = this.GetComponent<Canvas>());
|
}
|
}
|
|
[SerializeField]
|
CullingFullScreenType m_Culling = CullingFullScreenType.None;
|
|
Material m_SpriteGrayMaterial;
|
public Material spriteGrayMaterial {
|
get {
|
return this.m_SpriteGrayMaterial ?? (this.m_SpriteGrayMaterial = MaterialUtility.GetInstantiatedSpriteGrayMaterial());
|
}
|
}
|
|
private void Awake()
|
{
|
m_Canvas = this.GetComponent<Canvas>();
|
|
UIManager.Instance.OnOpenWindow += OnWindowOpen;
|
UIManager.Instance.OnCloseWindow += OnWindowClose;
|
}
|
|
private void OnDestroy()
|
{
|
UIManager.Instance.OnOpenWindow -= OnWindowOpen;
|
UIManager.Instance.OnCloseWindow -= OnWindowClose;
|
}
|
|
private void OnWindowOpen(UIBase _window)
|
{
|
var culling = false;
|
switch (m_Culling)
|
{
|
case CullingFullScreenType.None:
|
culling = false;
|
break;
|
|
// TODO YYL
|
// case CullingFullScreenType.Any:
|
// culling = UIManager.Instance.ExistAnyFullScreenOrMaskWin();
|
// break;
|
// default:
|
// culling = UIManager.Instance.ExistAnyFullScreenOrMaskWinLEqual((WindowType)m_Culling);
|
// break;
|
default:
|
break;
|
}
|
|
canvas.gameObject.SetLayer(culling ? LayerUtility.DevisableUI : LayerUtility.UILayer, false);
|
}
|
|
private void OnWindowClose(UIBase _window)
|
{
|
var culling = false;
|
switch (m_Culling)
|
{
|
case CullingFullScreenType.None:
|
culling = false;
|
break;
|
|
// TODO YYL
|
// case CullingFullScreenType.Any:
|
// culling = WindowCenter.Instance.ExistAnyFullScreenOrMaskWin();
|
// break;
|
// default:
|
// culling = WindowCenter.Instance.ExistAnyFullScreenOrMaskWinLEqual((WindowType)m_Culling);
|
// break;
|
default:
|
break;
|
}
|
|
canvas.gameObject.SetLayer(culling ? LayerUtility.DevisableUI : LayerUtility.UILayer, false);
|
}
|
|
private void Start()
|
{
|
var canvasScaler = this.GetComponent<CanvasScaler>();
|
if (canvasScaler != null && canvasScaler.screenMatchMode == CanvasScaler.ScreenMatchMode.MatchWidthOrHeight)
|
{
|
var screenAspect = Screen.width / (float)Screen.height;
|
var referenceAspect = canvasScaler.referenceResolution.x / (float)canvasScaler.referenceResolution.y;
|
|
if ((screenAspect - referenceAspect) > 0.0001f)
|
{
|
canvasScaler.matchWidthOrHeight = 1f;
|
}
|
else
|
{
|
canvasScaler.matchWidthOrHeight = 0f;
|
}
|
}
|
|
}
|
|
public enum CullingFullScreenType
|
{
|
Base = 0,
|
Normal = 1,
|
Modal = 2,
|
Tip = 3,
|
System = 4,
|
Loading = 5,
|
None = 6,
|
Any = 7,
|
}
|
|
}
|