/// <summary> /// MethodInfo からパラメータ生成 /// </summary> internal Args(MethodInfo info) { var parameters = info.GetParameters(); _args = new ArgValue(); foreach (var t in parameters) { var name = t.Name; var type = t.ParameterType; var v = new Value(); v.Set(type, name); _args.Add(name, v); } }
internal ArrayList OnGUI() { // Header using (new GUILayout.HorizontalScope()) { EditorGUILayout.LabelField(string.Format("{0} [{1}]", _label, Values.Length)); GUILayout.FlexibleSpace(); // 要素の追加 if (GUILayout.Button(EditorGUIUtility.TrIconContent("Toolbar Plus"), "RL FooterButton", GUILayout.Width(16))) { var v = new Value(); v.Set(_elementType, ""); Values.Add("", v); } } using (new EditorGUI.IndentLevelScope()) { for (var i = 0; i < Values.Length; i++) { using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.LabelField("Element " + i); if (GUILayout.Button(EditorGUIUtility.TrIconContent("Toolbar Minus"), "RL FooterButton", GUILayout.Width(16))) { Values.Remove(i); GUIUtility.ExitGUI(); } } Values[i].OnGUI(); } } return(this); }
internal void Set(Type type, string name) { if (_ints.IsTarget(type)) { _ints.Add(name); } else if (_floats.IsTarget(type)) { _floats.Add(name); } else if (_strings.IsTarget(type)) { _strings.Add(name, ""); } else if (_bools.IsTarget(type)) { _bools.Add(name); } else if (_enums.IsTarget(type)) { _enums.Add(type); } else if (_vector2s.IsTarget(type)) { _vector2s.Add(name); } else if (_vector3s.IsTarget(type)) { _vector3s.Add(name); } else if (_vector2Ints.IsTarget(type)) { _vector2Ints.Add(name); } else if (_vector3Ints.IsTarget(type)) { _vector3Ints.Add(name); } else if (_colors.IsTarget(type)) { _colors.Add(name); } else if (_arrayes.IsTarget(type)) { _arrayes.Add(name, type); } // 上記でヒットしなかった else if (IsClassOrStruct(type)) { var v = new Value(name); // フィールドから要素を構築 foreach (var field in type.GetFields(Flags)) { v.Set(field.FieldType, field.Name); } _values.Add(name, v); } else { Debug.LogError("Invalid Type: " + type.Name); } }