public void Draw(State state) { if (GUILayout.Button("Add")) { FieldItem item = Undo.AddComponent <FieldItem>(state.gameObject); item.Reset(); } EditorGUILayout.Space(); var fieldItems = state.GetComponents <FieldItem>(); foreach (var fieldItem in fieldItems) { EditorGUILayout.BeginHorizontal(); var fieldItemTitle = GetTitleStringOf(fieldItem.title); GUILayout.Label(fieldItemTitle, EditorStyles.boldLabel); if (GUILayout.Button("Reset")) { fieldItem.Reset(); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel++; Undo.RecordObject(fieldItem, "Edit fieldItem title"); fieldItem.title = EditorGUILayout.TextField("Title:", fieldItem.title); EditorGUILayout.LabelField("Corners:"); EditorGUILayout.BeginHorizontal(); for (int i = 0; i < fieldItem.vertices.Length; i++) { var vertex = fieldItem.vertices[i]; var buttonStyle = Styles.ToggleButtonStyleNormal; if (StateItemPlaceEditor.EditableItem == (object)vertex) { buttonStyle = Styles.ToggleButtonStyleToggled; } if (GUILayout.Button(vertex.index.ToString(), buttonStyle)) { if (StateItemPlaceEditor.EditableItem == (object)vertex) { StateItemPlaceEditor.CleadEditing(); } else { StateItemPlaceEditor.EnableEditing(state, vertex, Color.green); } } } EditorGUILayout.EndHorizontal(); string[] content = Enum.GetNames(typeof(FieldItem.ContentType)); int value_now = (int)fieldItem.contentType; fieldItem.contentType = (FieldItem.ContentType)EditorGUILayout.Popup(new GUIContent("Content:"), value_now, content); switch (fieldItem.contentType) { case FieldItem.ContentType.Photo: var previewTexture = fieldItem.texture; if (previewTexture == null) { previewTexture = EditorGUIUtility.whiteTexture; } fieldItem.texture = EditorGUI.ObjectField(EditorGUILayout.GetControlRect(false, 150.0f), fieldItem.texture, typeof(Texture2D), false) as Texture; break; case FieldItem.ContentType.Video: var previewVideoClip = fieldItem.videoClip; if (previewVideoClip == null) { previewTexture = EditorGUIUtility.whiteTexture; } fieldItem.videoClip = EditorGUI.ObjectField(EditorGUILayout.GetControlRect(false, 150.0f), fieldItem.videoClip, typeof(VideoClip), false) as VideoClip; break; } } }