ModalPanel.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using UnityEngine.Events;
  4. using System.Collections;
  5. // This script will be updated in Part 2 of this 2 part series.
  6. public class ModalPanel : MonoBehaviour {
  7. public Text question;
  8. public Image iconImage;
  9. public Button yesButton;
  10. public Button noButton;
  11. public Button cancelButton;
  12. public GameObject modalPanelObject;
  13. private static ModalPanel modalPanel;
  14. public static ModalPanel Instance()
  15. {
  16. if (!modalPanel)
  17. {
  18. modalPanel = FindObjectOfType(typeof(ModalPanel)) as ModalPanel;
  19. if (!modalPanel)
  20. Debug.LogError("There needs to be one active ModalPanel script on a GameObject in your scene.");
  21. }
  22. return modalPanel;
  23. }
  24. // Yes/No/Cancel: A string, a Yes event, a No event and Cancel event
  25. public void Choice(string question, UnityAction yesEvent, UnityAction noEvent, UnityAction cancelEvent)
  26. {
  27. modalPanelObject.SetActive(true);
  28. yesButton.onClick.RemoveAllListeners();
  29. yesButton.onClick.AddListener(yesEvent);
  30. yesButton.onClick.AddListener(ClosePanel);
  31. noButton.onClick.RemoveAllListeners();
  32. noButton.onClick.AddListener(noEvent);
  33. noButton.onClick.AddListener(ClosePanel);
  34. cancelButton.onClick.RemoveAllListeners();
  35. cancelButton.onClick.AddListener(cancelEvent);
  36. cancelButton.onClick.AddListener(ClosePanel);
  37. this.question.text = question;
  38. this.iconImage.gameObject.SetActive(false);
  39. yesButton.gameObject.SetActive(true);
  40. noButton.gameObject.SetActive(true);
  41. cancelButton.gameObject.SetActive(true);
  42. }
  43. void ClosePanel()
  44. {
  45. modalPanelObject.SetActive(false);
  46. }
  47. }