Also im Prinzip möchtest du etwas haben mit dem du Sachen freischaltest, nachdem die vorherige Forschung(en) abgeschlossen wurden. Ich würde jetzt für die Forschung eine Klasse anlegen.
public class Research
{
public string name = "";
public int duration = 0;
public bool completed = false;
public List<Research> require = new List<Forschung>();
//Constructor, damit du die Klasse einfacher erstellen kannst
public Research(string _name, int _duration)
{
name = _name;
duration = _duration;
};
public void addRequirement(Research r)
{
require.Add(r);
};
};
Jetzt brauchst du ein anderes Script, welches die Forschungen speichert. Sowas wie ein GameController, quasi ein GameObject was nur 1x existiert und in dem Fall als Speicher fungiert. Dieses Script startet dann auch die Forschung.
GameController (MonoBehaviour) (BEISPIEL)
List<Research> research = new List<Research>();
void Start()
{
//[...] anderes Zeug machen
research.Add(new Research("Forschung 1", 120));
research.Add(new Research("Forschung 2", 50));
getResearchByName("Forschung 2").addRequirement(getResearchByName("Forschung 1")); // Forschung 2 benötigt Forschung 1
// du legst hier so viele Forschungen wie du möchtest an. Sollte Forschung 2 auch "Forschung 1 1/2" benötigen, kannst du diese auch noch hinzufügen
getResearchByName("Forschung 2").addRequirement(getResearchByName("Forschung 1 1/2"));
};
//Gibt true oder false zurück, ob alle requirements abgeschlossen wurden
bool canResearch(string query)
{
Research res = research.Find(r => r.name = query);
foreach(Research r in res.require)
{
if(!r.completed)
return false;
};
return true;
};
Research getResearchByName(string query)
{
return research.Find(r => r.name = query);
};
Ein User-Interface musst du dir natürlich selber in Unity bauen, aber hier hast du einen Ansatz für die Logik dahinter - schau dir einfach den Code an und versuche Ihn zu verstehen, bei Fragen kann ich dir da gerne weiterhelfen.
Achso, es kann sein, dass du etwas aus System.Collections importieren musst, bin mir aber nicht sicher was genau. Deine IDE wird dir bei List<Research> aber sicher einen Vorschlag geben.