How to handle default parameters in Show method of DialogueBox class

I have implemented a DialogueBox class which can be static, singleton, service locator, etc. I have written it as a singleton pattern. I have ShowDialogueBox method with many parameters. How can I handle it? The parameters are message, ok button label, cancel button label, has the cancel button or not, actions to be invoked when users click on ok or cancel button.

Is it more suitable to apply Builder pattern for it?

Because the method is not sometimes flexible and I have to provide all parameters.

In addition, my messages are not static and sometimes I need to display a message with parameters like cost value, etc. Therefore, I should add another parameter like params to the method or create the message with params before calling the method?

//DialogueBox.GetInstance().ShowDialogueBox("BuyMessage",()=>{},  //       ()=>{}, "Buy", "Cancel",true)  using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;  public class DialogueBox : MonoBehaviour {     [SerializeField] private Text _cancelButtonText;     [SerializeField] private Text _okButtonText;     [SerializeField] private GameObject _cancelButtonObj;     [SerializeField] private GameObject _okButtonObj;     [SerializeField] private Text _messageText;     [SerializeField] private GameObject _dialogueBoxObj; //DialogueBox GameObject(Panel)     private static DialogueBox _instance;      private Action OKButtonPressedAction = delegate { };     private Action CancelButtonPressedAction = delegate { };      public static DialogueBox GetInstance()     {         return _instance;     }      private void Awake()     {         if (_instance == null)         {             _instance = this;         }         else         {             Destroy(gameObject);         }     }      public void ShowDialogueBox(string messageKey, Action okButtonPressed,         Action cancelButtonPressed = null, string okKey = "OK", string cancelKey = "Cancel",         bool hasCancelButton = true)     {         //Localizer manages languages with key/message pair for example:          //Localizer.GetInstance().Dictionary[key]---> returns message for the current language          _messageText.text = Localizer.GetInstance().Dictionary[messageKey];         _okButtonText.text = Localizer.GetInstance().Dictionary[okKey];         if (hasCancelButton)         {             _cancelButtonObj.SetActive(true); //Show the cancel button             _cancelButtonText.text = Localizer.GetInstance().Dictionary[cancelKey];         }         else             _cancelButtonObj.SetActive(false);          OKButtonPressedAction = okButtonPressed;          CancelButtonPressedAction = cancelButtonPressed;     }      public void OnOKButtonPressed() //It is called when a user clicks on OK button     {         _dialogueBoxObj.SetActive(false);          if( OKButtonPressedAction!=null)                      OKButtonPressedAction();     }     public void OnCancelButtonPressed() //It is called when a user clicks on OK button     {         _dialogueBoxObj.SetActive(false);         if(CancelButtonPressedAction!=null)             CancelButtonPressedAction();     } }