Делаю игру на юнити (Новеллу) и у меня пока есть два выбора. Варианты 1 выбора остаются с вариантами 2 выбора, как сделать чтоб они удалились?
Dialogs:
namespace Game.Data
{
[CreateAssetMenu(menuName = «Game/Data/» + nameof(Dialogs))]
public class Dialogs : ScriptableObject
{
[System.Serializable]
public class Dialog
{
[SerializeField] private string name;
[SerializeField][TextArea(5, 10)] private string _text;
[SerializeField] private ChoiseElement[] _choises;
public string Name ⇒ name;
public string Text ⇒ _text;
public ChoiseElement[] choises ⇒ _choises;
}
[System.Serializable]
public class ChoiseElement
{
[SerializeField] private string _text;
[SerializeField] private Dialogs _dialogs;
public string Text ⇒ _text;
public Dialogs Dialogs ⇒ _dialogs;
}
[SerializeField] private Dialog[] _dialogs;
public Dialog[] Get ⇒ _dialogs;
}
}
Say:
namespace Game.View
{
public class Say : MonoBehaviour
{
[SerializeField] private MyDialogs _dialogs;
[SerializeField] private TextMeshProUGUI _name;
[SerializeField] private TextMeshProUGUI _text;
[SerializeField] private Choise _choise;
public MyDialogs Dialogs { get; set; }
private int _index;
private void Start ()
{
if (_dialogs != null) NextDialog();
}
public void NextDialog ()
{
if (_index == _dialogs.Get.Length) return;
_name.SetText(_dialogs.Get[_index].Name);
_text.SetText(_dialogs.Get[_index].Text);
ChoiseCreate();
_index++;
}
private void ChoiseCreate()
{
if (_dialogs.Get[_index].choises.Length != 0)
{
_choise.Show();
foreach (MyDialogs.ChoiseElement element in _dialogs.Get[_index].choises)
_choise.Add(element, this);
}
}
public void Choise (ChoiseButton choiseButton)
{
_index = 0;
_dialogs = choiseButton.Dialogs;
choiseButton.Hide();
_choise.Hide();
}
}
}
Choise:
namespace Game.View
{
public class Choise : MonoBehaviour
{
[SerializeField] private Canvas _self;
[SerializeField] private Transform _parrent;
[SerializeField] private ChoiseButton _prefabs;
private ChoiseButton tmp;
public void Show () ⇒ _self.enabled = true;
public void Add(MyDialogs.ChoiseElement choiseElement, Say say)
{
tmp = Instantiate(_prefabs, _parrent);
tmp.Say = say;
tmp.Show(choiseElement);
}
public void Hide() ⇒ _self.enabled = false;
}
}
ChoseButton:
namespace Game.View
{
public class ChoiseButton : MonoBehaviour
{
[SerializeField] private TextMeshProUGUI _text;
[SerializeField] private Button _self;
[SerializeField] private Say _say;
public MyDialogs Dialogs { get; private set; }
public Say Say { set ⇒ _say = value; }
public void Show(MyDialogs.ChoiseElement choiseElement)
{
_text.SetText(choiseElement.Text);
Dialogs = choiseElement.Dialogs;
_self.onClick.AddListener(() ⇒ _say.Choise(this));
}
public void Hide() ⇒ Destroy(gameObject);
}
}
DialogInteraction:
public class DialogInteraction : MonoBehaviour
{
public Button button;
public Dialogs dialogs;
private void Start()
{
button.onClick.AddListener(OnButtonClicked);
}
private void OnButtonClicked()
{
button.gameObject.SetActive(false);
{
Destroy(gameObject);
}
}