public static int DisplayDialogComplex (string title, string message, string ok, string cancel, string alt);


titleTitle for dialog.
messagePurpose for the dialog.
okDialog function chosen.
altChoose alternative dialog purpose.
cancelClose dialog with no operation.


int The id of the chosen button.


Displays a modal dialog with three buttons.

Use it for displaying message boxes in the editor.

DisplayDialogComplex is similar to DisplayDialog. This DisplayDialogComplex member shows a dialog with three buttons. These buttons represent ok, alt and cancel. DisplayDialogComplex returns an integer 0, 1 or 2 corresponding to the ok, alt and cancel buttons.

The first button will be the default, and can also be activated by simply pressing Enter. The third button will be considered the "cancel" button. On a PC this can also be activated by pressing Escape or clicking the dialog window close button.

For compliance with normal platform UI guidelines the actual display order of the buttons is platform-dependent. On Windows, the order is ok, alt, cancel; on macOS, the order is alt, cancel, ok.

See Also: DisplayDialog.

macOS display dialog buttons for the example below.

PC display dialog buttons for the example below.

The script reference example below creates a complex display dialog. The chosen button causes a Unity EditorApplication static function to be called.

using UnityEngine;
using UnityEditor;

public class DisplayDlgComplexExample : EditorWindow { // Lets you save, save and quit or quit without saving

[MenuItem("Example/Enhanced Save")] static void Init() { int option = EditorUtility.DisplayDialogComplex("What do you want to do?", "Please choose one of the following options.", "Save Scene", "Save and Quit", "Quit without saving");

switch (option) { // Save Scene case 0: EditorApplication.SaveScene(EditorApplication.currentScene); break;

// Save and Quit. case 1: EditorApplication.SaveScene(EditorApplication.currentScene); EditorApplication.Exit(0); break;

// Quit Without saving. case 2: EditorApplication.Exit(0); break;

default: Debug.LogError("Unrecognized option."); break; } } }