Tanoda
ShineEffector.cs
Go to the documentation of this file.
1
3
5{
6 [ExecuteInEditMode, RequireComponent(typeof(Image))]
7 [AddComponentMenu("UI/Effects/Extensions/Shining Effect")]
8 public class ShineEffector : MonoBehaviour
9 {
10
12 [SerializeField, HideInInspector]
13 GameObject effectRoot;
14 [Range(-1, 1)]
15 public float yOffset = -1;
16
17 public float YOffset
18 {
19 get
20 {
21 return yOffset;
22 }
23 set
24 {
25 ChangeVal(value);
26 yOffset = value;
27 }
28 }
29
30 [Range(0.1f, 1)]
31 public float width = 0.5f;
32 RectTransform effectorRect;
33 void OnEnable()
34 {
35 if (effector == null)
36 {
37 GameObject effectorobj = new GameObject("effector");
38
39 effectRoot = new GameObject("ShineEffect");
40 effectRoot.transform.SetParent(this.transform);
41 effectRoot.AddComponent<Image>().sprite = gameObject.GetComponent<Image>().sprite;
42 effectRoot.GetComponent<Image>().type = gameObject.GetComponent<Image>().type;
43 effectRoot.AddComponent<Mask>().showMaskGraphic = false;
44 effectRoot.transform.localScale = Vector3.one;
45 effectRoot.GetComponent<RectTransform>().anchoredPosition3D = Vector3.zero;
46 effectRoot.GetComponent<RectTransform>().anchorMax = Vector2.one;
47 effectRoot.GetComponent<RectTransform>().anchorMin = Vector2.zero;
48 effectRoot.GetComponent<RectTransform>().offsetMax = Vector2.zero;
49 effectRoot.GetComponent<RectTransform>().offsetMin = Vector2.zero;
50 effectRoot.transform.SetAsFirstSibling();
51
52 effectorobj.AddComponent<RectTransform>();
53 effectorobj.transform.SetParent(effectRoot.transform);
54 effectorRect = effectorobj.GetComponent<RectTransform>();
55 effectorRect.localScale = Vector3.one;
56 effectorRect.anchoredPosition3D = Vector3.zero;
57
58 effectorRect.gameObject.AddComponent<ShineEffect>();
59 effectorRect.anchorMax = Vector2.one;
60 effectorRect.anchorMin = Vector2.zero;
61
62 effectorRect.Rotate(0, 0, -8);
63 effector = effectorobj.GetComponent<ShineEffect>();
64 effectorRect.offsetMax = Vector2.zero;
65 effectorRect.offsetMin = Vector2.zero;
66 OnValidate();
67 }
68 }
69
70 void OnValidate()
71 {
74
75 if (yOffset <= -1 || yOffset >= 1)
76 {
77 effectRoot.SetActive(false);
78 }
79 else if (!effectRoot.activeSelf)
80 {
81 effectRoot.SetActive(true);
82 }
83 {
84
85 }
86 }
87
88 void ChangeVal(float value)
89 {
90 effector.Yoffset = value;
91 if (value <= -1 || value >= 1)
92 {
93 effectRoot.SetActive(false);
94 }
95 else if (!effectRoot.activeSelf)
96 {
97 effectRoot.SetActive(true);
98 }
99 {
100
101 }
102 }
103 void OnDestroy()
104 {
105 if (!Application.isPlaying)
106 {
107 DestroyImmediate(effectRoot);
108 }
109 else
110 {
111 Destroy(effectRoot);
112 }
113 }
114 }
115}
System.Drawing.Image Image
Definition: TestScript.cs:37
Credit Erdener Gonenc - @PixelEnvision.