Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Sascha

Administrators
  • Content count

    10,305
  • Joined

  • Last visited

  • Days Won

    433

Sascha last won the day on April 17

Sascha had the most liked content!

Community Reputation

2,054 Excellent

1 Follower

About Sascha

  • Rank
    Community Manager
  • Birthday 08/13/1990

Contact Methods

  • Website URL
    http://www.indiepowered.net

Profile Information

  • Gender
    Male
  • Location
    Hamburg
  • Interests
    Programmierung

Recent Profile Visitors

27,828 profile views
  1. Mehrsprachiges Menü erstellen

    Wer zu dem Thema noch auf 2018.2 stable warten kann: https://garry.tv/2018/04/16/unitys-staging-packages/
  2. Wo sind die Build settings ?

    Edit > Project Settings > Player oder File > Build Settings > unten auf "Player Settings..."
  3. Objekte verschwinden

    Hast du Occlusion Culling drin? Wenn ja, kann's gut daran liegen. Wenn nein: Lass dir mal vom Renderer die bounds anzeigen und schau, ob die das Objekt richtig umschließen.
  4. Neuer Anfänger

    Klingt doch nach einer soliden Herangehensweise. Willkommen hier!
  5. Unity Error

    Dann kann die Exception eigentlich nicht hier auftreten. Wenn bei dieser einen Zeile eine Exception fliegen würde, w+rde die Schleife abbrechen. Ohne Wenn und Aber. Daher wieder der übliche Verdacht: Hast du das Script zweimal in der Szene? Das eine, das du im Blick hast, läuft durch, das andere schmeißt die Exception? Die kaputtere Alternative wäre, dass die UnityException zwar in der Konsole angezeigt wird, aber gar nicht wirklich geworfen wird. Davon würde ich aber erstmal nicht ausgehen. In jedem Fall, probiere mal das hier: for( ... ) { try { deineExceptionZeile } catch(Exception e) { Debug.LogException(e); Debug.LogError("Kaputt bei " + i); // ... } } Zu den beiden Debug.Logs kannst du noch beliebige andere hinzufügen, um zu schauen, was Sache ist. Alternativ halt mit nem Breakpoint deiner IDE, wenn du das schonmal gemacht hast.
  6. Mehrsprachiges Menü erstellen

    Mein Ansatz funktioniert in der Tat nicht sehr gut für größere Projekte. Habe ich auch weiter oben versucht, entsprechend anzusagen. Deine Variante skaliert da vermutlich echt besser, hat aber, wie ich finde, auch Nachteile. Mein Ansatz ist aus einem DI-basierten Ideenumfeld entstanden. Wenn du irgendwo etwas anderes als zuvor stehen haben willst, ziehst du einfach ein anderes Objekt ins Feld. Bei dir muss man bei einer solchen Änderung gleich den Code aufmachen, abändern und neu kompilieren. Aber nicht falsch verstehen: Ich finde deinen Ansatz nicht schlechter, nur halt mit anderen Vor- und Nachteilen. Ich glaube, das richtig zu machen erfordert ein ganz schön komplexes System, in dem man zwar wie bei mir Zuweisungen von Schlüsseln ohne Änderungen im Code machen kann, dafür aber, wie du richtig angemerkt hast, nicht Unmengen an Objekten erstellen muss. Ich mache mir da auch seit ein, zwei Wochen Gedanken drüber.
  7. Was studiert ihr so bzw. habt ihr studiert?

    Habe reine Informatik an der Uni Hamburg studiert. Was den Kontakt mit Unity angeht: Wenn du nicht irgendwas mit "Game" im Namen studierst, dann wird sich der Kontakt auf das beschränken, was du dir eigenständig besorgst. Bei uns gab's, als ich angefangen habe, exakt gar nichts mit Spielen. Ich habe dann erstmal eine AG (also eine studentische Gruppe) gegründet, die sich damit beschäftigt, aus den Bemühungen ist dann tatsächlich auch irgendwann eine Seminarveranstaltung entstanden, die zweimal je ein Semester lang stattfand. Dann gab's ne neue Professur und der Gute hat einen Haufen geiles Zeug eingeführt, unter anderem auch ein Unity-Seminar. Was ich damit sagen will: Ich würde nicht dazu raten, sich die Uni danach auszusuchen, ob man da was mit Unity machen kann. Entweder du studierst etwas mit Games oder suchst dir halt was gutes. Studieren ist halt nicht dasselbe wie eine Ausbildung zu machen. Da geht's ne Menge um Eigeninitiative und wenn du wirklich etwas vom Studium haben willst (und dir das leisten kannst!!), dann solltest du versuchen, möglichst viel mitzunehmen, selbst wenn es keine Leistungspunkte dafür gibt. Falls du dich für diesen Weg entscheiden solltest, hast du so viel Kontakt mit Unity, wie du willst. Wenn dich Wirtschaft wirklich interessiert, ist Wirtschaftinformatik bestimmt ne super Sache. Stelle dich aber auch darauf ein, in deiner Fachschaft einen Haufen Hoddels zu haben. Ich habe mehrere Semester lang die Einsteiger-Programmierkurse betreut und da gab's immer so ein paar Leute, da wusstest du gleich: Das sind Wirtschaftsinformatiker. Nicht falsch verstehen - umgekehrt konnte man das nicht immer sagen. Aber immer wenn einer sich ziemlich blöd angestellt hat und das dann relativieren wollte mit einem Satz wie "aber wieso muss ich das denn alles lernen?" dann war die Sache mal wieder klar. Das sind dann so die Leute, die sich ihren Studiengang etwa so ausgesucht haben: "Irgendwas mit Wirtschaft damit ich damit am Ende Geld verdienen kann (finde den Fehler) und Informatik weil uns in der Schule immer gesagt wurde das wird immer gesucht." Und sich dann im ersten Semester darüber aufregen dass man Programmieren lernen muss. Aber naja. Gibt auch so Leute, die wissen, was das für ein Studiengang ist, und zu denen würdest du offenbar auch gehören. Da ich mit Wirtschaftskursen an der Uni exakt gar nichts am Hut hatte/habe, kann ich dazu nichts sagen, aber ich glaube, mit einem wirtschaftsfokussierten Abi hast du da vermutlich schon ein vernünftiges Bild von.
  8. Unity Error

    Du bist absolut sicher, dass alle Felder des Arrays nicht null sind?
  9. Arrays in PlayerPrefs speichern

    Also bei Arrays oder Objekten (statt einzelner Werte) werden PlayerPrefs etwas unpraktisch. Prinzipiell baust du dir einfach nur deine Keys aus Einzelteilen zusammen. Das in einer Funktion zusammenzufassen ist dabei immer eine gute Idee. Ein Beispiel, wie man ein String-Array speichern oder laden kann: public static void SetStringArray(string key, string[] values) { PlayerPrefs.SetInt(key + ".length", values.Length); var i = 0; for(; i < values.Length; i++) { PlayerPrefs.SetString(key + "[" + i + "]", values[i]); } while(PlayerPrefs.Haskey(key + "[" + i + "]")) { PlayerPrefs.DeleteKey(key + "[" + i + "]"); i++; } } public static string[] GetStringArray(string key) { var length = PlayerPrefs.GetInt(key + ".length", 0); var result = new string[length]; for(var i = 0; i < length; i++) { result[i] = PlayerPrefs.GetString(key + "[" + i + "]"); } return result; } Wenn man das jetzt noch auf Objekte ausweitet, wird's echt haarig. Wenn du eine Alternative nutzen willst, gibt es einen Haufen Möglichkeiten. .NET ist darauf ausgelegt, XML am besten zu finden, daher gibt's da schon ewig eingebauten Support für. Es gibt für XML und alle möglichen anderen Formate aber auch Bibliotheken, die man benutzen kann. Mit "C# XML", "C# JSON" oder "C# YAML" und dererlei Suchbegriffen wird man schnell fündig.
  10. Mehrsprachiges Menü erstellen

    Wenn du eine Komponente scriptest, dann kannst du diese ja mehrere Male auf beliebige GameObjects packen. public class Test : MonoBehaviour { public int zahl; } Jede Instanz dieser Klasse kann dann seinen Wert für jede der Felder (hier: "Zahl") haben. Hier siehst du zwei Instanzen desselben Scripts auf einem GameObject, und jede hat ihren eigenen Wert für die Variable. Wenn du nun nicht von MonoBehaviour erbst, sondern von "ScriptableObject", dann kannst du das Script nicht mehr auf GameObjects ziehen. Es verliert die Fähigkeit, eine Komponente zu sein. Was du dafür aber machen kannst, ist das CreateAssetMenuAttribute drüber zu packen, so wie ich das oben gemacht habe. Damit fügst du für dein ScriptableObject einen Menüpunkt im Asset/Create-Menü hinzu. Das ist das Menü, das erscheint, wenn du in deinen Assets rechtsklickst. Durch [CreateAssetMenu(menuName = "Language/Key")] entsteht also: Wenn du da jetzt draufklickst, entsteht ein neues Asset, eine Datei, die eine Instanz deiner Klasse darstellt. So wie bei Komponenten, nur halt nicht auf einem GameObject als Komponente angebracht, sondern einfach als Datei in den Assets. Sieht dann so aus: Wenn du dieses Ding dann markierst, siehst du im Inspektor wieder alle Felder (in diesem Fall: "Zahl"), die die Klasse hat. Und wieder kann jede Instanz deiner Klasse einen eigenen Wert haben, der sich von den Werten der anderen Objekte derselben Sorte unterschiedet. Wenn du jetzt also die ScriptableObject-Klasse, die ich oben gepostet habe, 1:1 in dein Projekt kopierst (Das obligatorische "using UnityEngine;" darüber aber nicht vergessen), dann kannst du lauter solche Objekte erzeugen. Statt einer Zahl hat aber jedes "LanguageKey"-Objekt, das du erstellst, drei Strings als Felder: "de", "en" und "fr". Das kannst du beliebig ändern oder erweitern. Wenn du jetzt eines der LanguageKey-Objekte markierst, kannst du einen bestimmen String in allen benötigten Sprachen angeben: (In den Screenshots heißt die Klasse MyLanguageKey, weil ich sonst die Klasse doppelt gehabt hätte) Wenn du jetzt das, was du im zweiten Code-Ausschnitt siehst, in dein System einbaust, kannst du diese drei Strings abfragen, nachdem du das Objekt in das Feld gezogen hast: Hier hast du noch eine ganze Klasse, die das ganze demonstriert: using UnityEngine; public class LanguageKeyTest : MonoBehaviour { public LanguageKey languageKey; private void Start() { Debug.Log("Englisch: " + languageKey.en); Debug.Log("Deutsch: " + languageKey.de); Debug.Log("Französisch: " + languageKey.fr); } }
  11. Unity Error

    Hat Unity ständig. Gerade in den noch etwas frischeren Features. Kannst du getrost ignorieren, solange alles so läuft wie du willst.
  12. Mehrsprachiges Menü erstellen

    Da gibt's sehr einfache Lösungen - und gute. Ein meiner Meinung nach vernünftiges Zwischending ist eine ScriptableObject-Klasse, die für jede vorgesehene Sprache ein Feld hat: [CreateAssetMenu(menuName = "Language/Key")] public class LanguageKey : ScriptableObject { public string en; public string de; public string fr; } Davon erstellst du dann für jeden String, der in den Sprachen verfügbar sein soll, einen und schreibst halt rein, was da rein soll. Dann kannstu so ein Ding einfach referenzieren und benutzen: public LanguageKey languageKey; public void SwitchLanguage() { text.text = languageKey.en; }
  13. Skybox abdunkeln

    Skybox weg machen, Ambient Light hochdrehen. https://unity3d.com/de/learn/tutorials/topics/graphics/ambient-lighting Dazu einfach im Lighting Window unter "Environment Lighting" die "Source" von "Skybox" auf ... Color (?) stellen und die Farbe einstellen. https://docs.unity3d.com/Manual/GlobalIllumination.html
  14. Eine Spinne!

    Hallo! Aber sag mal... bei deinem Nutzerbild kann ich nur sechs Beine zählen?
  15. WWW.Form sendet nix

    @dewa @Zer0Cool Ist etwas verspätet, aber was soll's... Den Fehler hatte ich auch. Irgendein Vollprofi bei Unity Tech hat "Chunked Transfer" bei WWW angeschaltet und das in den Release reingepatcht. Erst danach haben sie gemerkt, dass die allermeisten Webserver das gar nicht unterstützen. Wenn du selber hostest und dich genügend auskennst (nicht so wie ich), kannst du den Webserver einrichten dass er mit Chunked Transfer klarkommt. Wenn nicht, ist eben nur der Unity-Versionswechsel möglich. Die haben das irgendwo bei 2017.x (ich glaube .3) eingeführt und in 2018.1 einfach wieder abgeschaltet. UnityWebRequest hat dafür übrigens ein Flag, aber dafür ist POST bei UnityWebRequest in 2017.3 komplett kaputt...
×