Jump to content
Unity Insider Forum

devandart

Members
  • Content Count

    425
  • Joined

  • Last visited

  • Days Won

    18

devandart last won the day on September 20

devandart had the most liked content!

Community Reputation

111 Excellent

About devandart

  • Rank
    Advanced Member

Profile Information

  • Gender
    Male
  • Location
    Hamburg
  • Interests
    game development, software engineering, audio engineering/mixing/mastering

Recent Profile Visitors

3,702 profile views
  1. Die Idee finde ich gut. Oder dein Charakter geht in eine Höhle, Schlafplatz oder was auch immer. So wie viele andere Spiele das auch machen. Damit verhinderst du auch ohne viel Denken, dass in deinem Charakter irgendwas dummes spawned.
  2. Du kannst Areale für Tiere machen, aus denen diese nicht herausdürfen. Beim "hetzen" laufen sie an der Grenze dann eben wieder zurück oder schon vorher in eine andere Richtung. Und dann kannst du die Entfernung vom Spieler zum Areal-Spawner messen oder so. Wozu ist es denn zwingend nötig, die Tierpositionen zu speichern? Du kannst ja auch einfach sowas wie "Menge an getöteten Tieren" pro Spawner speichern. Ist es für das Gameplay nötig, jedes Tier im Detail persistent zu speichern? Genau. Und da gibt es viele Ansätze. Aber um eine Art level of detail für die Messung wirst du wahrscheinlich nicht herumkommen. Du kannst aber die Abfragen der Messung in eine Queue packen und diese werden dann jeden Frame abwechselnd abgefragt. Also Update Frame 1 = Tier 1 - Tier 10 misst, Update Frame 2 = Tier 11 - 20 misst. Oder so in der Art.
  3. Nur ein paar Anregungen: Tiere kannst du mMn problemlos despawnen, wenn der Spieler z.B. weiter als x Meter entfernt ist und das vielleicht noch über eine Dauer von x Minuten Für das spawnen von Tieren und prüfen, ob diese schon oder noch da sind bzw. leben, brauchst du keinen Collider. Du packst dir einfach Referenzen in eine Liste oder so und kannst jederzeit abfragen, ob dein Tier schon oder noch lebt. Hierfür bekommt jedes Tier eine Eigenschaft Health. Wenn diese 0 ist, ist das Tier tot. Prozentualen Kram kannst du mit https://docs.unity3d.com/ScriptReference/Random.html machen Das mit der Entfernung messen kann komplexer werden. Aber grundsätzlich kannst du das Distanz messen für Spawner auf verschiedenen Frames ausführen und/oder erst pro Areal (1km² z.B.) prüfen, ob der Spieler darin ist und dann nur darin alle Prüfungen pro Spawner machen oder oder oder, nicht ganz trivial.
  4. Gerne! Und das ist ganz normal beim Programmieren, dass man da manchmal Stunden oder sogar Tage oder Wochen keine Lösung für etwas bestimmtes findet. Die Kunst ist es glaube ich durchzuhalten, bis man bei den meisten Problemen die Lösung für selbstverständlich hält.
  5. Du hast lediglich dein Array mit einer Größe von 5 Feldern erstellt. In diesen 5 Feldern sind aber überall NULL-Verweise, weil hinter dem jeweiligen Feld kein Spieler-Objekt existiert. Du musst also für alle Felder einen Spieler instanzieren. Ist Spieler eine normale Klasse, oder erbt diese von MonoBehaviour? Davon hängt ab, wie du die Felder initialisierst. Wenn die Klasse nicht von MonoBehaviour erbt, geht das z.B. so for(int i=0; i<spielerListe.Length; i++) { spielerListe[i] = new Spieler(); }
  6. Ich bin verwirrt. Es ging doch eben noch nicht um Speichern/Laden von Enemies, sondern das Übergeben von Wetterdaten/sonstigen Einstellungen oder nicht? Damit sich dein Wetter-Manager oder was auch immer selbst initialisieren kann... Oder liege ich falsch?
  7. Die kannst Du je nach Datenfeldern einfach mit dem JsonUtility speichern und auch laden. https://docs.unity3d.com/ScriptReference/JsonUtility.html
  8. Du könntest die Daten in einer statischen Klasse oder einem ScriptableObject speichern. In der neuen Scene lädt sich das jeweilige Objekt selbst und referenziert die Klasse/ das ScriptableObject und nimmt dessen Daten in Awake oder wo auch immer. Finden tut er dein Objekt wahrscheinlich nicht, weil dieses zum Zeitpunkt des Aufrufs noch nicht "da" ist, sprich geladen wurde.
  9. Super, dass du den Fehler lösen konntest! Das war mehr subjektiv gemeint. Z.B. kann es gefährlich/verwirrend werden, wenn Du direkten Zugriff auf die CharacterList hast (meine Meinung). Dort könntest Du dann auch, wenn schon ein Manager existiert, auch sowas wie "CreateCharacter(alle Parameter)" als Methode machen, die einen fertigen Character zurückgibt und das ganze zur Liste hinzufügen macht der Manager intern. Aber das ist nur so eine Idee. Zudem übergibst du als Parameter "int gender" und schreibst im Konstruktor, wofür welcher Int-Wert steht. Da könntest du z.B. ein Enum public enum Gender { Male = 0, Female = 1 } nutzen, welches du übergibst. Dann werden auch falsche Int-Werte durch Schreibfehler vermieden. Und ich persönlich finde Eine_Tolle_Klasse nicht schön, sondern würde CamelCase EineTolleKlasse schreiben. Aber solange du alleine arbeitest ist das egal.
  10. Mal abgesehen davon, dass das echt schräg aussieht, kannst Du mit dem Visual Studio Debugger durch den Code steppen und sehen, wo der Haken ist. Ja, muss man. Doku s.u. https://docs.microsoft.com/de-de/dotnet/api/system.array.copy?view=netframework-4.8
  11. Ich verstehe das Problem nach schnellem Überfliegen immernoch nicht genau. Aber kannst Du die Karte, die du woanders anzeigen möchtest, nicht einfach dort als anderes GameObject aktivieren und anzeigen, statt das Original rumzuschieben?
  12. Genau, das Ding muss immer auf einem Image liegen und zumindest meiner Erfahrung nach geht es auch nicht auf alpha = 0 images. Super, dass es nun durch Diskutieren gelöst wurde.
  13. Du versuchst mit deiner Maus auf einer transparenten Stelle das Event auszulösen oder? Sofern es um diesen Tooltip geht.
  14. Ich kann mir vorstellen, dass das Problem bei FixedUpdate passierte. Je nachdem wie groß der Unterschied zwischen FPS und Physics ticks ist. Wenn Du im einen Update() Mouse Wheel != 0 hast, im nächsten Update() dann wieder == 0 und dann wird erst FixedUpdate() ausgeführt, kommt immer 0 raus. Eventuell auch ein verlorener Fokus zum Spiel?!
×
×
  • Create New...