Habe ich das eigentlich richtig verstanden, dass es keine Anweisungen gibt, die immer ausgeführt werden, sondern alle Anweisungen von einer Fallunterscheidung abhängen?
Naja. Es hindert dich ja niemand daran, einen Bedingungstyp zu haben, der IMMER erfüllt ist.
Die Frage ist natürlich, wie man die Trigger am geschicktesten Abfragen sollte. Die einfachste Möglichkeit wäre es natürlich in jedem Frame sämtliche Bedingungen zu prüfen, und dann entsprechend Anweisungen auszuführen. Man könnte auch versuchen, das ganze Event-basiert zu lösen, indem man beispielsweise die Bedingung mit der Spielerposition immer genau dann prüft, wenn der Spieler sich bewegt hat. Die Idee dahinter wäre halt, die Abfragen effizienter zu gestalten. Ein Problem hätte man dann aber mit kombinierten Abfragen, weil diese ja nicht nur auf einem Ereignis beruhen.
Und man kann sich natürlich überlegen, wie einzelne Bedingungen implementiert werden. Bleiben wir mal bei dem "Spieler in Bereich" Beispiel. Du könntest jetzt entweder einen Zeiger auf dein Spielerobjekt speichern, und darüber die Position äußerst leicht abfragen. Aber Zeiger können nunmal ungültig werden, also musst du aufpassen, was du mit dem Spielerobjekt anstellst (wenn du z.B. ein neues erstellst, weil ein Level geladen wurde oder so). Du hast also einfach eine Abhängigkeit zwischen Trigger und Spielerobjekt, und die sind nie sonderlich schön.
Eine Alternative wäre es, jedesmal den SzenenManager (oder sonst eine Verwaltungsklasse) nach dem aktuellen Spielerobjekt zu fragen. Es kann sein, dass auch dieser keinen direkten Zugriff darauf hat und es erst raussuchen muss (beispielsweise aus einer Liste aller Objekte), was natürlich viel aufwändiger ist. Andererseits ist dieser Ansatz aber auch viel robuster, weil du im Endeffekt weniger Abhängigkeiten hast (und die Abhängigkeit zum einer eher globalen Klasse wie einen SzenenManager vermutlich weniger aufwändig ist).
Man hat also einfach viele Freiheiten, wie man es implementieren kann und es schadet nicht, sich vorher ein paar Gedanken darüber zu machen. An deiner Stelle würde ich das ganze aber erstmal so einfach wie möglich halten, selbst wenn du in jedem Frame ein Objekt aus einer Liste mit 1000 Elementen raussuchen musst, ist das im Endeffekt nicht wirklcih schlimm. Schlimm wird es, wenn du das 10.000 mal pro Frame machen musst. Baue also ein einfaches System und schaue, wo dessen Grenzen liegen, wenn das nicht reicht, kannst du danach immer noch optimieren.