Simple system for creating modal windows with callbacks in Unity, with extensible template.
This code
SimpleModalWindow.Create() .SetHeader("Simple Modal") .SetBody("Here goes body") .Show();Gives you this simple dismissable modal window:
You can also add buttons with callbacks and make modal window not dismissable:
SimpleModalWindow.Create(ignorable: false) .SetHeader("Modal With Buttons") .SetBody("You must press one of the buttons") .AddButton("Yes", () => print("Yes pressed"), ModalButtonType.Success) .AddButton("No", () => print("No pressed"), ModalButtonType.Danger) .Show();Which will lead you to this result:
You can make your own modal windows, for example, modal with input field creation simply as following:
- Create script and inherit it from
ModalWindow<T>
using System; using UnityEngine; using UnityEngine.UI; public class InputModalWindow : ModalWindow<InputModalWindow> { [SerializeField] private InputField inputField; private Action<string> onInputFieldDone; public InputModalWindow SetInputField(Action<string> onDone) { onInputFieldDone = onDone; return this; } void SubmitInput() { onInputFieldDone?.Invoke(inputField.text); onInputFieldDone = null; Close(); } public void UI_InputFieldOKButton() { SubmitInput(); } }- Create prefab for it (use original modal window prefab as template) and place it under
Resources/Modal Windows
- Use it from your code in this way:
ModalWindow<InputModalWindow>.Create() .SetHeader("Input Field Modal") .SetBody("Enter something:") .SetInputField((inputResult) => print("Text: " + inputResult)) .Show();Result:
Option 1:
Download latest .unitypackage release from the releases tab and import it in your project.
Option 2:
Download .zip of this repository and extract all files from Assets/ModalWindows to your project folder.
Thanks for using this asset, i will be pleasured to see any feedback :)




