
Объект должен содержать список действий (например, передать какой-либо предмет игрок или что-то еще). При выборе какого-либо действия событие может продолжаться, поэтому у вас будет: новый конкретный текст для этого выбора, новые кнопки с действиями.
Проблема состоит в том, чтобы сделать сложную структуру текстов и действий (действий). это самая сложная часть) без использования нелепого количества классов для каждого свернутого события.
Однако простое решение — написать класс для каждого события:
Код: Выделить всё
public class PlotRoom : MonoBehaviour
{
[SerializedField] private Text textField;
// Imagine some object that can create buttons by actions
[SerializedField] private ButtonsContainer buttons;
[SerializedField] private List texts; // Same length as actionGroups
private abstract List actionGroups { get; }
protected void Quit() { //quit the plot }
protected void UpdatePlot(int group)
{
textField.text = texts[group];
buttons.Spawn(actionGroups[group])
}
}
public class Plot1 : PlotRoom
{
protected override List actionGroups => new()
{
new () { SomeAction1, SomeAction2, Quit },
new () { SomeAction2, Quit }
}
private void SomeAction1()
{
DoSomething();
UpdatePlot(1);
}
private void SomeAction2()
{
DoSomethigElse();
Quit();
}
}
public class Plot2 : PlotRoom
{
// ...
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... riting-e-g
Мобильная версия