public static void Draw(SerializedProperty list, OnAddAt onAddAtCallback, OnRemoveAt onRemoveAtCallback) { if (!list.isArray) { return; } EditorGUILayout.PropertyField(list); EditorGUI.indentLevel += 1; if (list.isExpanded) { EditorGUILayout.PropertyField(list.FindPropertyRelative("Array.size")); EditorGUILayout.BeginHorizontal(); GUILayout.Space(16); if (GUILayout.Button(new GUIContent("+"))) { if (onAddAtCallback != null) { onAddAtCallback(-1); } } EditorGUILayout.EndHorizontal(); for (int i = 0; i < list.arraySize; i++) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(16); GUILayout.Label(string.Format("Vertex {0}", i)); EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); if (GUILayout.Button(new GUIContent("+"), miniButtonWidth, miniButtonHeight)) { if (onAddAtCallback != null) { onAddAtCallback(i); } } if (GUILayout.Button(new GUIContent("-"), miniButtonWidth, miniButtonHeight)) { if (onRemoveAtCallback != null) { onRemoveAtCallback(i); } } EditorGUILayout.EndHorizontal(); } } EditorGUI.indentLevel -= 1; }
/// <summary> /// Removes a string from the string table. /// </summary> public static bool RemoveAt(int index) { SampleCsStringTable string_table = SampleCsStringTable.Instance; bool rc = string_table.RemoveAt(index); if (rc) { // Invoke event if (null != OnRemoveAt) { OnRemoveAt.Invoke(index); } } return(rc); }