Tagebuch: Tower Defense

So. Schon eine ganze Zeit her, dass ich hier was geschrieben hab. Hatte mitunter zwei Gründe:

  1. Ich hatte am WE nicht viel Zeit
  2. Ich hatte mal wieder meinen 3D-Kurs weiter gemacht und wollte erstmal die Lektion abschließen.

Allerdings kommt Punkt 2 meinem Spiel zu gute. Also hab ich im Prinzip meine Zeit einfach mit lernen verbracht.

Heute hat es mich aber mal wieder gereizt etwas umzusetzen und hab mehr erreicht als gedacht. Eigentlich war mein Tagesziel das Hauptmenü soweit im groben fertig zu bekommen. Das hab ich auch, inkl. tests. Den Spiel-Starten-Button hatte ich ja, nur war der bisher ohne test. Das hab ich geändert.

Außerdem hab ich jetzt ein nettes Navigationssystem drin. Das managt im wesentlichen welches Panel wann angezeigt wird. Im wesentlichen funktioniert es recht einfach. Es gibt ein NavigationsEvent. Das nimmt entgegen, welches Panel ich anzeigen möchte und eine Router-Componente schaltet dann das entsprechende Panel aktiv und alle anderen als inaktiv (ist auch getestet). Schaut dann so aus:

image

Das ganze lässt sich sehr einfach erweitern und dürfte flexibel genug sein um alle meine Use-cases abzudecken. Das Target ist btw ein enum - wo ich direkt an den Thread denken musste:

Aber da ich hier eine endliche Anzahl erwarte und der Inspector mir eine schöne Dropdown-Ansicht ermöglicht, hielt ich es für eine gute Idee:

namespace Game.Ui {
    
    [Serializable]
    public enum NavItem {
        MainMenu = 0,
        ChangelogPanel = 1
    }
}

Allerdings mit festen Konstanten. Ich weiß nicht mehr genau welche Probleme ich damals mit Feature Runner hatte, aber ich meine das es sinnvoll war dem enum Werte zuzuweisen. Ich glaube es war wegen dem löschen. Angenommen ich lösche „MainMenu“, dann würde „ChangelogPanel“ den Wert 0 bekommen, was ja nicht mehr stimmt.

Zu guter letzt hab ich jetzt noch die Changelogs im Spiel als Scriptable-objects hinterlegt:

image

Zum Glück hab ich ja alles in Hack’n’plan hinterlegt, sodass es relativ einfach war an die Infos zu den Änderungen zu kommen. Und pflegen kann ich das dann im Unity-Inspector:

image

Das wars für heute. Es geht dann damit weiter, dass ich eine Ansicht für das Changelog baue :slight_smile: