-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathScreenSizeNotifier.cs
93 lines (86 loc) · 2.48 KB
/
ScreenSizeNotifier.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using UnityEngine;
namespace Wrj
{
public class ScreenSizeNotifier : MonoBehaviour
{
public delegate void ScreenChangeWorldDelegate(Vector3 worldDimensions);
public delegate void ScreenChangeDelegate(Vector2 screenDimensions);
public delegate void ChangeDelegate();
public ScreenChangeWorldDelegate OnScreenChangeWorld;
public ScreenChangeDelegate OnScreenChange;
public ChangeDelegate OnChange;
private int initialWidth;
private int initialHeight;
private int updatedWidth;
private int updatedHeight;
private Camera mainCamera;
public static Vector3 ScreenDimensions => new Vector2(Screen.width, Screen.height);
public static Vector3 WorldDimensions
{
get
{
if (!Application.isPlaying)
{
return Camera.main.ScreenToWorldPoint(ScreenDimensions);
}
else
{
return Instance.mainCamera.ScreenToWorldPoint(ScreenDimensions);
}
}
}
/// Static Singleton behavior
protected static ScreenSizeNotifier _instance;
public static ScreenSizeNotifier Instance
{
get
{
return _instance;
}
}
void Awake ()
{
if (_instance == null)
{
mainCamera = Camera.main;
_instance = this;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(this);
}
}
void Start()
{
updatedHeight = Screen.height;
updatedWidth = Screen.width;
}
void Update()
{
updatedHeight = Screen.height;
updatedWidth = Screen.width;
if ((initialHeight != updatedHeight) || (initialWidth != updatedWidth))
{
initialHeight = updatedHeight;
initialWidth = updatedWidth;
Notify();
}
}
void Notify()
{
if (OnScreenChangeWorld != null)
{
OnScreenChangeWorld(WorldDimensions);
}
if (OnScreenChange != null)
{
OnScreenChange(ScreenDimensions);
}
if (OnChange != null)
{
OnChange();
}
}
}
}