Tanoda
pb_AutoStageItemEditor.cs
Go to the documentation of this file.
1using UnityEngine;
2using System.Collections;
3using System.Collections.Generic;
4using System.Reflection;
6using UnityEngine.UI;
7
9{
11 {
12 protected override void InitializeGUI()
13 {
14 pb_GUIUtility.AddVerticalLayoutGroup(gameObject);
15 foreach(PropertyInfo prop in pb_Reflection.GetSerializableProperties(target.GetType(), BindingFlags.Instance | BindingFlags.Public))
16 {
17 if( ignoreProperties.Contains(prop.Name) || System.Attribute.GetCustomAttribute(prop, typeof(pb_InspectorIgnoreAttribute)) != null)
18 continue;
19
20 pb_TypeInspector typeInspector = pb_InspectorResolver.AddTypeInspector(target, transform, property : prop);
21 typeInspector.onTypeInspectorSetValue = this.OnTypeInspectorSetValue;
22 }
23 foreach(FieldInfo fil in target.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public))
24 {
25 if(System.Attribute.GetCustomAttribute(fil, typeof(pb_InspectorIgnoreAttribute)) != null)
26 continue;
27
28 if (fil.Name == "stage")
29 continue;
30 pb_TypeInspector typeInspector = pb_InspectorResolver.AddTypeInspector(target, transform, field : fil);
31 typeInspector.onTypeInspectorSetValue = this.OnTypeInspectorSetValue;
32 }
33
34 {
35 var toggles = new GameObject("Toggles");
36 var group = toggles.AddComponent<ToggleGroup>();
37 var hlg = toggles.AddComponent<HorizontalLayoutGroup>();
38 hlg.spacing = 2;
39 group.allowSwitchOff = false;
40
41 #region toggles
42 var toggle1 = new GameObject("Toggle1");
43 var stage1 = toggle1.AddComponent<Toggle>();
44 var t1img = toggle1.AddComponent<Image>();
45 t1img.color = new Color(82f/255f,82f/255f,82f/255f,204f/255f);
46 var tcm1 = new GameObject("ToggleCheckmark");
47 tcm1.transform.SetParent(toggle1.transform);
48 var tcmi1 = tcm1.AddComponent<Image>();
49 tcm1.GetComponent<RectTransform>().offsetMax = Vector2.zero;
50 tcm1.GetComponent<RectTransform>().offsetMin = Vector2.zero;
51 tcm1.GetComponent<RectTransform>().anchorMin = Vector2.zero;
52 tcm1.GetComponent<RectTransform>().anchorMax = Vector2.one;
53 tcmi1.sprite = GameObject.Find("Checkmark").GetComponent<Image>().sprite;
54 t1img.sprite = GameObject.Find("Background").GetComponent<Image>().sprite;
55 stage1.graphic = tcmi1;
56 stage1.isOn = false;
57 stage1.toggleTransition = Toggle.ToggleTransition.Fade;
58 stage1.targetGraphic = t1img;
59 var toggle2 = new GameObject("Toggle2");
60 var stage2 = toggle2.AddComponent<Toggle>();
61 var t2img = toggle2.AddComponent<Image>();
62 t2img.color = new Color(82f/255f,82f/255f,82f/255f,204f/255f);
63 var tcm2 = new GameObject("ToggleCheckmark");
64 tcm2.transform.SetParent(toggle2.transform);
65 var tcmi2 = tcm2.AddComponent<Image>();
66 tcm2.GetComponent<RectTransform>().offsetMax = Vector2.zero;
67 tcm2.GetComponent<RectTransform>().offsetMin = Vector2.zero;
68 tcm2.GetComponent<RectTransform>().anchorMin = Vector2.zero;
69 tcm2.GetComponent<RectTransform>().anchorMax = Vector2.one;
70 tcmi2.sprite = tcmi1.sprite;
71 t2img.sprite = t1img.sprite;
72 stage2.graphic = tcmi2;
73 stage2.isOn = false;
74 stage2.toggleTransition = Toggle.ToggleTransition.Fade;
75 stage2.targetGraphic = t2img;
76 var toggle3 = new GameObject("Toggle3");
77 var stage3 = toggle3.AddComponent<Toggle>();
78 var t3img = toggle3.AddComponent<Image>();
79 t3img.color = new Color(82f/255f,82f/255f,82f/255f,204f/255f);
80 var tcm3 = new GameObject("ToggleCheckmark");
81 tcm3.transform.SetParent(toggle3.transform);
82 var tcmi3 = tcm3.AddComponent<Image>();
83 tcm3.GetComponent<RectTransform>().offsetMax = Vector2.zero;
84 tcm3.GetComponent<RectTransform>().offsetMin = Vector2.zero;
85 tcm3.GetComponent<RectTransform>().anchorMin = Vector2.zero;
86 tcm3.GetComponent<RectTransform>().anchorMax = Vector2.one;
87 tcmi3.sprite = tcmi1.sprite;
88 t3img.sprite = t1img.sprite;
89 stage3.graphic = tcmi3;
90 stage3.isOn = false;
91 stage3.toggleTransition = Toggle.ToggleTransition.Fade;
92 stage3.targetGraphic = t3img;
93 var toggle4 = new GameObject("Toggle4");
94 var stage4 = toggle4.AddComponent<Toggle>();
95 var t4img = toggle4.AddComponent<Image>();
96 t4img.color = new Color(82f/255f,82f/255f,82f/255f,204f/255f);
97 var tcm4 = new GameObject("ToggleCheckmark");
98 tcm4.transform.SetParent(toggle4.transform);
99 var tcmi4 = tcm4.AddComponent<Image>();
100 tcm4.GetComponent<RectTransform>().offsetMax = Vector2.zero;
101 tcm4.GetComponent<RectTransform>().offsetMin = Vector2.zero;
102 tcm4.GetComponent<RectTransform>().anchorMin = Vector2.zero;
103 tcm4.GetComponent<RectTransform>().anchorMax = Vector2.one;
104 tcmi4.sprite = tcmi1.sprite;
105 t4img.sprite = t1img.sprite;
106 stage4.graphic = tcmi4;
107 stage4.isOn = false;
108 stage4.toggleTransition = Toggle.ToggleTransition.Fade;
109 stage4.targetGraphic = t4img;
110 var toggle5 = new GameObject("Toggle5");
111 var stage5 = toggle5.AddComponent<Toggle>();
112 var t5img = toggle5.AddComponent<Image>();
113 t5img.color = new Color(82f/255f,82f/255f,82f/255f,204f/255f);
114 var tcm5 = new GameObject("ToggleCheckmark");
115 tcm5.transform.SetParent(toggle5.transform);
116 var tcmi5 = tcm5.AddComponent<Image>();
117 tcm5.GetComponent<RectTransform>().offsetMax = Vector2.zero;
118 tcm5.GetComponent<RectTransform>().offsetMin = Vector2.zero;
119 tcm5.GetComponent<RectTransform>().anchorMin = Vector2.zero;
120 tcm5.GetComponent<RectTransform>().anchorMax = Vector2.one;
121 tcmi5.sprite = tcmi1.sprite;
122 t5img.sprite = t1img.sprite;
123 stage5.graphic = tcmi5;
124 stage5.isOn = false;
125 stage5.toggleTransition = Toggle.ToggleTransition.Fade;
126 stage5.targetGraphic = t5img;
127 var toggle6 = new GameObject("Toggle6");
128 var stage6 = toggle6.AddComponent<Toggle>();
129 var t6img = toggle6.AddComponent<Image>();
130 t6img.color = new Color(82f/255f,82f/255f,82f/255f,204f/255f);
131 var tcm6 = new GameObject("ToggleCheckmark");
132 tcm6.transform.SetParent(toggle6.transform);
133 var tcmi6 = tcm6.AddComponent<Image>();
134 tcm6.GetComponent<RectTransform>().offsetMax = Vector2.zero;
135 tcm6.GetComponent<RectTransform>().offsetMin = Vector2.zero;
136 tcm6.GetComponent<RectTransform>().anchorMin = Vector2.zero;
137 tcm6.GetComponent<RectTransform>().anchorMax = Vector2.one;
138 tcmi6.sprite = tcmi1.sprite;
139 t6img.sprite = t1img.sprite;
140 stage6.graphic = tcmi6;
141 stage6.isOn = false;
142 stage6.toggleTransition = Toggle.ToggleTransition.Fade;
143 stage6.targetGraphic = t6img;
144 stage1.group = group;
145 stage2.group = group;
146 stage3.group = group;
147 stage4.group = group;
148 stage5.group = group;
149 stage6.group = group;
150 stage1.onValueChanged.AddListener(target.GetComponent<AutoStageItem>().SetStage1);
151 stage2.onValueChanged.AddListener(target.GetComponent<AutoStageItem>().SetStage2);
152 stage3.onValueChanged.AddListener(target.GetComponent<AutoStageItem>().SetStage3);
153 stage4.onValueChanged.AddListener(target.GetComponent<AutoStageItem>().SetStage4);
154 stage5.onValueChanged.AddListener(target.GetComponent<AutoStageItem>().SetStage5);
155 stage6.onValueChanged.AddListener(target.GetComponent<AutoStageItem>().SetStage6);
156 #endregion
157 var textGO = new GameObject("LabelGO");
158 var text = textGO.AddComponent<Text>();
159 var lec = toggles.AddComponent<LayoutElement>();
160 textGO.GetComponent<RectTransform>().sizeDelta = new Vector2(170, 14);
161 lec.minHeight = 24;
162 text.font = Font.CreateDynamicFontFromOSFont("Arial", 24);
163 text.alignment = TextAnchor.MiddleCenter;
164 text.text = "Stage";
165 text.color = Color.white;
166 text.resizeTextForBestFit = true;
167 textGO.transform.SetParent(toggles.transform);
168 toggle1.transform.SetParent(toggles.transform);
169 toggle2.transform.SetParent(toggles.transform);
170 toggle3.transform.SetParent(toggles.transform);
171 toggle4.transform.SetParent(toggles.transform);
172 toggle5.transform.SetParent(toggles.transform);
173 toggle6.transform.SetParent(toggles.transform);
174 toggles.transform.SetParent(transform);
175 }
176
177 {
178 var buttonGO = new GameObject("ClickButton");
179 var image = buttonGO.AddComponent<Image>();
180 var button = buttonGO.AddComponent<Button>();
181 var textGO = new GameObject("LabelGO");
182 var text = textGO.AddComponent<Text>();
183 var lec = buttonGO.AddComponent<LayoutElement>();
184 textGO.GetComponent<RectTransform>().sizeDelta = new Vector2(170, 14);
185 lec.minHeight = 24;
186 text.font = Font.CreateDynamicFontFromOSFont("Arial", 24);
187 text.alignment = TextAnchor.MiddleCenter;
188 text.text = "Set this stage";
189 text.color = Color.white;
190 text.resizeTextForBestFit = true;
191 text.resizeTextMaxSize = 20;
192 textGO.transform.SetParent(buttonGO.transform);
193 image.sprite = GameObject.Find("SaveButton").GetComponent<Image>().sprite;
194 image.type = Image.Type.Sliced;
195 image.color = new Color(255,255,255, 40/255.0f);
196 buttonGO.transform.SetParent(transform);
197 button.onClick.AddListener(target.GetComponent<AutoStageItem>().SetStage);
198 button.onClick.AddListener(UpdateGUI);
199 }
200 }
201
202 void OnTypeInspectorSetValue()
203 {
204 foreach(pb_Gizmo gizmo in target.gameObject.GetComponents<pb_Gizmo>())
205 {
206 if ( gizmo.CanEditType(target.GetType()) )
207 {
208 gizmo.OnComponentModified();
209 }
210 }
211 }
212
213 public static GameObject FindObject(GameObject parent, string name)
214 {
215 Transform[] trs= parent.GetComponentsInChildren<Transform>(true);
216 foreach(Transform t in trs){
217 if(t.name == name){
218 return t.gameObject;
219 }
220 }
221 return null;
222 }
223 }
224}
UnityEngine.UI.Button Button
Definition: Pointer.cs:7
System.Drawing.Image Image
Definition: TestScript.cs:37
UnityEngine.Color Color
Definition: TestScript.cs:32
void SetStage6(bool value)
void SetStage1(bool value)
void SetStage4(bool value)
void SetStage5(bool value)
void SetStage3(bool value)
void SetStage(int value)
Definition: AutoStageItem.cs:9
void SetStage2(bool value)
static GameObject FindObject(GameObject parent, string name)
static readonly HashSet< string > ignoreProperties
Component target
The UnityEngine.Component being edited.
bool CanEditType(Type t)
Definition: pb_Gizmo.cs:58
virtual void OnComponentModified()
Definition: pb_Gizmo.cs:55