Jump to content
Unity Insider Forum

Sascha

Administrators
  • Content Count

    11,266
  • Joined

  • Last visited

  • Days Won

    533

Everything posted by Sascha

  1. nameField.text (kleingeschrieben) ToString() holt nicht irgendeinen String aus einem Objekt, sondern gibt eine Repräsentation des Objekts zurück. Und die entspricht bei einem Textfeld nicht dem Inhalt.
  2. Was weiß ich denn, wie dein Spielfeld auszusehen hat? Ich weiß ja nichtmal, was das für ein Spiel ist oder welche Regeln es hat. Bin nicht in deinem Kopf drin Werden denn die Karten gelöscht, die bereits existieren, wenn du die Szene wechselst?
  3. Wir haben da mal ne Weile rumprobiert, aber das Plugin hat sich mega quergestellt... ich benutze einfach C, ist ähnlich genug Coroutines laufen auf MonoBehaviours, also deinen Script-Komponenten. Wenn die Komponente zerstört wird, sei es direkt, durch Zerstörung des GameObjects oder durch das Entladen der Szene, dann läuft sie natürlich nicht mehr weiter. Wenn eine Coroutine nach Laden einer neuen Szene noch läuft, dann liegt das daran, dass die MB-Komponente, auf der sie läuft, noch existiert, also durch DontDestroyOnLoad am Leben gehalten wird. Ich weiß ehrlich gesagt nicht, wo dein Fehler liegt. Ich sehe da einen Screenshot mit nem Hintergrundbild, nen Haufen Karten und etwas IMGUI drüber. Da ich nicht weiß, was du eigentlich haben willst, weiß ich nicht, wo der "abartige Effekt" ist
  4. Weil es die Dissonanz zwischen visueller Wahrnehmung und Gleichgewichtssinn ist, die Schwindel verursacht. Gibt ein paar Leute, die damit keine Probleme haben, aber ein sehr großer Teil der Spieler kann ein Spiel direkt weglegen, wenn die Kamera nicht nahezu ausschließlich durch den Kopf kontrolliert wird.
  5. Es ist sehr wichtig, dass du Regel Nummer eins nicht brichst: Dass die Kamera niemals von durch unberechenbare Faktoren außer dem Kopf des Spielers beeinflusst wird. Wenn der Spieler seinen Kopf in die Wand hält, dann darfst du ihn davon nicht abhalten. Was du allerdings machen kannst ist, das Bild schwarz zu machen, bis der Kopf wieder aus der Wand raus ist. Coolere Implementationen zeigen noch simple Fixpunkte an, damit du nicht die Orientierung verlierst und deinen Kopf wieder aus der Wand herauskriegst.
  6. Du hast dir auch gerade eine etwas ungewöhnliche Zielsetzung gemacht, so für den Anfang. Da ist nichts schlimmes dran, aber du musst hier mehrere Dinge auf einmal lernen, bevor du dein erstes Ergebnis zu sehen bekommst. Du hast jetzt zwei Möglichkeiten: Entweder, du machst Pause und arbeitest das eine oder andere Tutorial durch, damit du Schritt für Schritt deine verschiedenen Werkzeuge kennenlernst; oder du bleibst bei diesem Projekt. An beiden Wegen ist nichts auszusetzen, aber bei Variante zwei musst du dich drauf einstellen, dass die ganze Sache etwas nerviger wird, weil du mit lauter Sachen jonglierst, die du gerade noch kennenlernst. Ob du if-Abfragen brauchst, lässt sich nicht eindeutig beantworten, da viele Wege nach Rom führen. Meine Einschätzung wäre: Wenn du es irgendwie™ machst, dann ja, wenn du eine elegantere Lösung baust, dann nicht mehr, und wenn du eine richtig professionelle Implementation machst, dann sind wieder welche drin
  7. Die Scene View-Kamera hat einen Fokuspunkt, den du auch in die Tiefe verschieben kannst, und ein Zoom-Level relativ zu diesem Fokuspunkt. Wenn dein Fokuspunkt hinter dem Objekt liegt, das du anschauen willst, dann verschwindet es beim Heranzoomen irgendwann. Du kannst auf das Objekt von Interesse in der Hierarchie Doppelklicken; du kannst es auch markieren und F drücken. Dann wird der Fokuspunkt auf den Objektmittelpunkt gesetzt.
  8. Ein Canvas wird Standardmäßig über dem gesamten restlichen Spiel gerendert. Das kannst du ändern, indem du beim Canvas von "Screen Space" auf etwas anderes stellst. Bei "Camera" verhält sich der Canvas immer noch so wie vorher relativ zu einer Kamera, die du angeben kannst. Es wird dann aber als Teil der Welt gerendert, mit einem einstellbaren Abstand zur Kamera. Wenn dein Partikelsystem aber eigentlich nur Teil des UI sein soll, kann dein Canvas im Screen Space bleiben. Du solltest dann meines Wissens nach einfach dein Partikelsystem in den Canvas hineinverschieben können.
  9. Ach, die Geschichte... Richtig. @Thariel Du hast natürlich Recht: Ein bewegtes GameObject ist nicht sofort an seiner neuen Position, sondern erst nach Ende des Frames. Da ein verschobenes Objekt letztendlich einiges mehr an Konsequenzen nach sich zieht, als man erwartet, arbeitet Unity alle Änderungen in der Szene in einem Rutsch ab. Dadurch müssen Dinge nicht doppelt und dreifach gemacht werden, wie es der Fall wäre, wenn diese Dinge nach jeder Transform-Änderung gemacht würden. In deinem Fall ist das natürlich schlecht. Du kannst diese Änderungen aber manuell auslösen, und zwar mit Physics.SyncTransforms. Das rufst du einfach nach dem Verschieben auf. Damit umgehst du zwar diese Optimierung, die es nicht ohne Grund gibt, aber wie immer gilt: Performance ist erst dann ein Thema, wenn es zum Problem wird. Optimalerweise würdest du dir eine eigene Datenstruktur bauen, die das Feld repräsentiert, und das ganze nicht über die Physik-Engine machen, aber wenn dein Spiel nicht zu groß ist, ersparst du dir mit dieser Methode einiges an Ärger. @Jomnitech Er löst den Raycast in Update aus - das heißt nicht, dass er das jeden Frame macht. FixedUpdate ändert hier auch nichts.
  10. Der gesamte Mono-Teil (also der C#-Teil) deines Projekts ist single threaded, sofern du nicht ECS nutzt. Das heißt, dass deine Raycasts nicht gleichzeitig ablaufen, sondern der eine immer vor dem anderen. Man könnte z.B. den Collider direkt auf das freie Feld schieben und die Animation auf den sichtbaren Teil des Objekts beschränken, damit der nächste Raycast direkt den Collider des anderen NPCs trifft.
  11. Mit riesigen Zahlen kann Unity nicht umgehen, weil 32-bit floating point numbers im Koordinatensystem verwendet werden. Im Millionenbereich kann dir bereits die erste Nachkommastelle flöten gehen. Im 10-Milliarden-Bereich gibt's schonmal Ungenauigkeiten im dreistelligen Bereich. Aber davon mal abgesehen: Wenn dein Objekt auf die gegebene Distanz zu klein ist, um gesehen zu werden, dann ist es zu klein, um gesehen zu werden. Wenn dein Objekt plötzlich größer ist, hat es ja nicht mehr die richtige Größe. Du schaust ja auch nicht in den Nachthimmel und beschwerst dich, dass du Deimos nicht erkennen kannst.
  12. Darauf gibt es leider keine eindeutige Antwort. In C# gibt es ja, im Gegensatz zum nahen Verwandten Java, Properties. Das bedeutet in diesem Kontext, dass eine Zuweisung wie deine beliebig viele Seiteneffekte haben kann. Beim Setzen von transform.localScale könnten z.B. irgendwelche Hintergrund-Datenstrukturen der Szene neu berechnet werden - was genau passiert, könnte dann wiederum davon abhängen, ob du einen Renderer und/oder einen Collider auf dem GameObject hast. Kann natürlich auch sein, dass die Property schlau genug ist, gar nichts neu zu berechnen, wenn der neue Wert sowieso dem alten entspricht - so, wie du es oben vorschlägst. Nur eben in der Property anstatt außenherum. Leider gibt es keinen Weg, da einfach mal hineinzuschauen, wenn du keinen Source Code-Zugriff hast. Unity hat da in den letzten Jahren verstärkt optimiert, aber was genau da passiert... keine Ahnung. Es gilt also wie immer: Mach dir keinen Kopf um Performance, lass einfach ohne großen Drumherum den Code laufen und kümmer dich um Framerate, wenn sie anfängt, ein Problem darzustellen. In Sachen Code-Qualität würde ich sagen: Die beiden Varianten geben sich nicht sonderlich viel.
  13. Tatsächlich ist das bei genauerem Hinsehen gar nicht so ganz einfach. Wenn zwei Flächen genau zur Kamera zeigen und eigentlich hintereinander sind, sind sie dadurch ja direkt aufeinander, und dann gibt's Z-Fights. Die einfachste Lösung wäre wohl, die Skalierung sehr klein, aber größer als 0 zu setzen, damit es flach aussieht aber nicht wirklich alles ineinander rutscht.
  14. Die Textur wird so groß in den Speicher geladen, wie sie ist. Die Skalierung in den Import Settings (und in der Transform-Komponente) haben darauf keinen Einfluss. Du kannst allerdings in den Import Settings auch eine Maximalgröße per Plattform festlegen, und das ist dann wirklich die Größe des Textur-Assets, wie es in den Build gepackt wird. Bei Texturgrößen gilt: So groß wie nötig, so klein wie möglich.
  15. Du kannst auf das Asset klicken und im Inspektor die Skalierung einstellen.
  16. Gab's nicht irgendwann auch mal die Regel, dass man Pro und Personal nicht mischen darf? Ist schon ne Weile her, dass ich davon gehört habe, ist vielleicht veraltet...
  17. Suchst du sowas wie Application.dataPath?
  18. Ja, mit Betonung auf "quasi" Bedenke: Absolute Sicherheit gibt es nicht.
  19. Für Echtzeit-Daten verschlüsselst du nicht großartig. Da schickst du nur das hin, was der Client behauptet. Der Server hat immer das letzte Wort und setzt sich ggf. über die Aussagen des Clients hinweg. Sensitive Daten verschickst du da ja auch nicht wirklich. Verschlüsselung wird erst interessant, wenn du sensible Daten (Login-Daten) versendest oder es schwieriger machen willst, bei bestimmten Sachen zu schummeln, z.B. bei Highscores. Für diese Sachen benutzt du kein UNet (und auch nichts vergleichbares), weil diese Bibliotheken für Echtzeit-Datenaustausch da sind. Wenn du einmalig etwas zum Server schickst, wie Login-Daten oder Highscores, dann nutze einfach https.
  20. Naja, irgendwo müsstest du dann ja trotzdem die GameObject-ID auf deinen Wert mappen.
  21. Die Instance ID ist nicht Session-übergreifend, also jedes Mal neu, wenn du das Spiel startest. Gibt's einen bestimmten Grund, warum irgendein System die GameObjects identifizieren soll anstatt dass du einfach eine Komponente auf deinem GO hast, das den Schlüssel für deinen Sprach-Datensatz enthält?
  22. Für @Peanuts Idee brauchst du das eigentlich genau nicht. Ich weiß nicht, ob sie überhaupt funktioniert, aber deshalb finde ich die Idee sogar ganz gut. Geschwindigkeit vom Mittelpunkt weg oder hin solltest du mit den bereits vorhandenen Modulen hinkriegen. Es geht aber noch viel einfacher. Ist mir gerade aufgefallen, als ich das mal ausprobieren wollte. Du machst einfach bei deinem Partikelsystem "External Forces" an und Packst dir da, wo die Münzen hinsollen, ein "Particle System Force Field" hin. Das lässt du auf den Standardeinstellungen, außer: End Range: Das muss so groß sein, dass alle möglichen Spawnpunkte für Partikelsysteme abgedeckt sind. Gravity: Das kannst du höher einstellen, damit die Partikel stärker zum Mittelpunkt des Force Fields gezogen werden. Drag/Strength: Das stellst du auf etwas höheres als 0, damit die Partikel nicht immer wieder über das Ziel hinausschießen. Denk daran, dass die Sache mit "End Range" bedeutet, dass sowohl die Partikelsysteme, als auch das Force Field im UI-Canvas sein sollten.
  23. Allem voran der übliche Hinweis dass hier keiner Anwalt ist und keiner dir eine richtige Rechtsberatung geben kann. Eigentlich kannst du nicht einfach geistiges Eigentum von anderen nehmen und für dein eigenes Werk verwenden. Da gibt's den Urheber des Werkes und den Rechteinhaber, von denen mindestens einer dir die explizite Erlaubnis geben muss. Etwas in Richtung Grauzone geht's dann bei Fair Use. Das ist amerikanisches Recht, nachdem du die Erlaubnis der Rechteinhaber nicht mehr brauchst, wenn du bei der Verwendung der Werke bestimmte Kriterien erfüllst. Unter anderem können Parodien darunter fallen. Das ist aber kein Recht, das weltweit gilt, und von einem deutschen Äquivalent wüsste ich nichts. Da müsste man dann auch mal schauen, ob die Rechte gelten, in denen du sitzt, in denen du vertreibst oder in denen die Rechteinhaber sitzen. China z.B. gibt kein Stück auf westliches Copyright. Entsprechend kopieren da alle wie wild alles mögliche, weil die Regierung da kein Problem mit hat. Was wollen westliche Firmen auch tun, außer Lobbyarbeit zu leisten, sodass die Politiker Sanktionen gegen Chin....oh. Der ganze Kram mit dem (internationalen) Urheberrecht ist ein wildes Dickicht aus völlig verschiedenen Rechtssystemen, von denen jedes einzeln genommene schon immer komplett undurchsichtig ist. Das ist ja auch das Problem mit Artikel 13/17... Nichtmal Anwälte schaffen es, da definitive Antworten zu gebe, geschweige denn irgendwelche Algorithmen. Aber egal. Meine Empfehlung ist: Lass es sein. Selbst, wenn es theoretisch Möglichkeiten gibt - mit der Verwendung anderer Leute geistigen Eigentums begibst du dich immer in eine Welt des Schmerzes.
×
×
  • Create New...