protected void OnGUI() { switch (m_EditorState) { case EditorState.ChooseSnake: EditorGUILayout.HelpBox("Drap snake editor prefab to this", MessageType.Info); EditorGUILayout.BeginHorizontal(); m_SnakeEditorPrefab = EditorGUILayout.ObjectField("Snake Editor Prefab", m_SnakeEditorPrefab, typeof(GameObject), false) as GameObject; if (m_SnakeEditorPrefab != null && GUILayout.Button("Editor")) { m_SnakeEditor = (PrefabUtility.InstantiatePrefab(m_SnakeEditorPrefab) as GameObject).GetComponent <slSnakeEditor>(); if (m_SnakeEditor != null) { m_EditorState = EditorState.EditorSnake; m_SnakeEditorUpdateCoroutine = hwmEditorCoroutine.Start(UpdateSnakeEditor()); } else { DestroyImmediate(m_SnakeEditor.gameObject); m_SnakeEditor = null; EditorUtility.DisplayDialog("Editor snake failed", "Invalid snake editor prefab", "OK"); } } EditorGUILayout.EndHorizontal(); break; case EditorState.EditorSnake: OnGUI_EditorSnake(); break; } }
private void DisposeEditorSnake() { if (m_SnakeEditorUpdateCoroutine != null) { m_SnakeEditorUpdateCoroutine.Stop(); m_SnakeEditorUpdateCoroutine = null; } m_SnakeEditorPrefab = null; if (m_SnakeEditor != null) { DestroyImmediate(m_SnakeEditor.gameObject); m_SnakeEditor = null; } }