Jump to content
Unity Insider Forum

Lightstorm

Members
  • Content count

    130
  • Joined

  • Last visited

  • Days Won

    2

Lightstorm last won the day on March 6 2015

Lightstorm had the most liked content!

Community Reputation

12 Gut

About Lightstorm

  • Rank
    Advanced Member

Profile Information

  • Gender
    Male

Recent Profile Visitors

2,184 profile views
  1. Lightstorm

    Anzahl eines Items aus einer Liste bestimmen

    Ja du könntest die Namen Vergleichen. Wenn du nur wissen willst ob es überhaupt doppelte Einträge in einer Liste gibt kannst Distinct nutzen: if(list.Count != list.Distinct().Count) { //doppelte Einträge vorhanden } Distinct entfernt doppelte Einträge von der Liste. Mit LINQ kann man auch komplexere Abfragen erzeugen, kenne mich damit aber nicht aus. Hier: https://stackoverflow.com/questions/18547354/c-sharp-linq-find-duplicates-in-list
  2. Lightstorm

    Zufallszahlen mit Schrittgrößen

    Stimmt, ich hatte gerade min und max vertauscht. Hm, scheint wirklich gut zu funktionieren. Danke!
  3. Lightstorm

    Anzahl eines Items aus einer Liste bestimmen

    Du könntest die Liste in einer foreach Schleife durchgehen und zählen wie oft ein bestimmtes Element auftaucht.
  4. Lightstorm

    Zufallszahlen mit Schrittgrößen

    Hm. Bei min=1, max=4, interval=2 wird damit nur die 4 generiert.
  5. Lightstorm

    Zufallszahlen mit Schrittgrößen

    Das ließe sich ja mit einem einfachen y+1 beheben. Bei min=1, max=4+1, steps=2 werden die Zahlen 0, 2 und 4 generiert. Warum die 0? Wenn ich 4 statt 4+1 benutze werden die Zahlen 0 und 2 generiert. Und wenn ich mich nicht irre hatte ich bei float Zahlen auch komische Ergebnisse abhängig davon ob es gerade oder ungerade Zahlen waren. Hatte dann herum probiert und das hier gefrickelt (min, max und step sind float): if (min == max) return min; if (min != max && step == 0) step = 1; float random; if (step % 2 == 0) random = Random.Range(min, max + 1); else random = Random.Range(min, max + step); float numSteps = Mathf.Floor(random / step); return numSteps * step; Damit schien es in einigen Versuchen richtig zu funktionieren. Habe aber keine Gewissheit und verstehe die Logik darin ehrlich gesagt auch nicht
  6. Lightstorm

    Dateien(Texturen) speichern

    Vielleicht kannst du die Texturen in Form von ScriptableObjects als Asset speichern?
  7. Lightstorm

    Zufallszahlen mit Schrittgrößen

    Ich möchte int und float Zufallszahlen haben die mit den Angaben min, max und step begrenzt werden. Eine Zahl zwischen min und max zu bekommen ist kein Problem, mit Random.Range(min, max). Aber die Schrittgröße ist das Problem. Unity bietet soweit ich weiß keine Random Funktion mit step Angabe. Ich habe natürlich etwas Google benutzt und habe auch einige Codes gefunden, aber keines davon scheint wirklich zu überzeugen. Das beste was ich fand ist das: int minSpawnHealth = 10; int maxSpawnHealth = 30; int stepSize = 5; int GetRandomHealth () { int randomHealth = Random.Range(minSpawnHealth, maxSpawnHealth); int numSteps = Mathf.Floor (randomHealth / stepSize); int adjustedHealth = numSteps * stepSize; return adjustedHealth; } Aber es funktioniert irgendwie nicht perfekt. Gibt man z.B. min=0, max=2 und step=1 an so erzeugt es nur die Zufallszahlen 0 und 1. Die 2 kommt nie vor. Ist dieses Verhalten normal? Max bedeutet für mich dass dies die noch zuletzt erlaubte Zahl ist. Und bei einer Schritten muss es doch auch vorkommen.
  8. Lightstorm

    Invoke ruft nicht auf

    Eine weitere Möglichkeit bei einem Invoke auf ein String zu verzichten ist die Methode nameof die es ab C# 6.0 gibt. Damit wird der Name der übergebenen Variable, Typ oder Methode als Zeichenkette zurückgegeben. Statt Invoke("ResetValues", 1) schreibt man Invoke(nameof(ResetValues), 1). So kann der Compiler die bei Invoke übergebenen Methode erfassen und die bereits genannten Schwierigkeiten vermeiden. https://www.heise.de/developer/artikel/nameof-Operator-in-C-6-0-2391981.html
  9. Lightstorm

    Mehrere Collider Trigger in einem GameObject?

    @KaBau Danke das hat mir weiter geholfen.
  10. Lightstorm

    Invoke ruft nicht auf

    Es klingt zumindest logisch nicht ständig eine längere Suche durchzuführen. Vor allem wenn das eigentlich nicht zwingend so sein muss. In der Dokumentation schreibt Unity nur "For performance reasons, it is recommended to not use this function every frame". https://docs.unity3d.com/ScriptReference/GameObject.Find.html Ich arbeite aktuell an einem Lernprojekt und musste bisher kein einziges mal die Find Funktion nutzen. War bisher nicht nötig. Über ScriptableObjects und das Event System lässt sich das alles schön referenzieren bzw. Objekte miteinander kommunizieren. Übrigens nochmal danke für dein Architektur Repo! Ist sehr nützlich.
  11. Lightstorm

    Invoke ruft nicht auf

    Es ist eine Suchfunktion. Alle GameObjects werden anhand ihres String Namens durchsucht. Wenn du viele Spieleobjekte hast und die Suchfunktion z.B. in der Update Funktion benutzt kann das unter Umständen die Performance beeinträchtigen.
  12. Lightstorm

    Invoke ruft nicht auf

    Was ist eigentlich hiermit. Auch empfehlenswert? https://assetstore.unity.com/packages/tools/animation/more-effective-coroutines-free-54975 http://trinary.tech/category/mec/ Time taken to execute 100,000 empty coroutines Unity's Built in Coroutines: 110.53ms MEC Free: 9.62ms
  13. Lightstorm

    Invoke ruft nicht auf

    Das ist interessant! Ich mache durchaus regen Gebrauch von Invoke. Hat die Methode mit dem String als Methodenname irgendein oder wieso haben die Unity Entwickler das nicht bisher verbessert wenn es doch offenbar ohne großen Aufwand besser geht?
  14. Lightstorm

    Invoke ruft nicht auf

    Wird Invoke in der Update Methode dadurch nicht ständig aufgerufen? Das setzt den Timer von 3 Sekunden vielleicht ständig wieder zurück? Edit: Ok, habs probiert, daran liegts nicht. Invoke bzw. ResetValues wird dann unzählige mal ausgeführt. Wird scorePlayerLeft oder scorePlayerRight denn wirklich größer oder gleich 1?
  15. Angenommen ich möchte an einem GameObject zwei Circle Collider haben. Die Positionen der beiden Circle Collider ist gleich, die eine ist größer als die andere. So dass ich einen äußeren und einen inneren Kreis habe. Wenn ein anderes GameObject nun zuerst in den äußeren Kreis rein läuft will ich ein speziellen Trigger auslösen und ein weiterer spezieller Trigger soll ausgelöst werden wenn das GameObject in den inneren Kreis rein läuft. Also zwei unterschiedliche Trigger. Mein Problem ist dass OnTriggerEnter2D immer ausgelöst wird, egal ob ein Objekt in den äußeren oder inneren Kreis läuft. Somit ist keine Unterscheidung möglich und ich kann keinen speziellen Trigger für beide Circle Collider programmieren. Oder irre ich mich? Gibt es eine elegante Lösung?
×