Jump to content
Unity Insider Forum

Kojote

Members
  • Gesamte Inhalte

    1.475
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    10

Alle erstellten Inhalte von Kojote

  1. Na dann wünscht mir mal viel Glück, muss morgen Mittag 3Tage auf Seminar fahren und Mittwoch Prüfung in C# schreiben. ^^

    1. Vorherige Kommentare anzeigen  %s mehr
    2. Kojote

      Kojote

      Dann mal ab, vorbereitet bin ich ja, also kann ja nach Eurer Meinung nix mehr schief gehn! :D

    3. Mabenan

      Mabenan

      Was wird den bei so einer Prüfung gefragt. Nur über C# oder auch über .Net.

    4. Kojote

      Kojote

      War das erste Seminar, Prüfungsthemen waren Zeiger, Delegates, verschiedene Methodenaufrufe, Exceptions und noch einiges an Grundwissen.

      Denk mal alles ganz gut gelaufen.

  2. Grüße! Mich ärgert Unity gerade ein wenig, vielleicht könnt ihr mir weiter helfen. Ich bin gerade dabei meine Spielflächen für mein Spiel zu erstellen. Diese Spielflächen erstelle ich ganz normal und speichere sie als Prefab ab. Wenn ein Spiel gestartet wird, wird Scene 1 geladen, dass User-Interface wird geladen und das Prefab aus den Resourcen geholt. Bis hier hin klappt alles, man kann mit dem Prefab interagieren, dass Spielfeld funktioniert! Jetzt kommt es zu diesem Teil in der Awake Methode: heySpielemenueSteuerung = GameObject.Find("Steuerung").GetComponent<HEX_Spielemenue_Steuerung>(); Das Prefab muss eine Verbindung zu meiner Spielmenü-Steuerung aufbauen, da es an diese Infomationen geben muss, also suche ich mir dieses Script und gut. Funktioniert auch, denn im Inspector wird das Script als gefunden angezeigt und auch in der Awake-Methode, wo das Script gesucht wird, gibt es keine Fehlermeldung und das Spiel wird gestartet. Will ich dann aber auf das Script zugreifen: heySpielsteuerung.pause = true; Sagt mir Unity, dass er das Script nicht finden kann: NullReferenceException: Object reference not set to an instance of an object HEX_Spielemenue_Steuerung.Pause () (at Assets/Scripts/HEX_Spielemenue_Steuerung.cs:259) Wie kann das sein, dass er es findet und dann wenn man es nutzen will nun wieder doch nicht - habt ihr da eine Idee? Grüße von Kojote EDIT: Ach, hat sich geklärt! 1. Ich hab Spielemenue mit Spielemenue_Steuerung verwechselt. 2. Wenn ein Prefab geladen wird, kommt doch an den Namen immer ein (Clone) dran, ist klar das da was nicht stimmt bzw. gefunden werden kann.
  3. Manchmal sieht man den Wald vor lauter Bäumen nicht. Es gebietet die Logik, dass das Eltern-Rect genau so groß ist, wie die gesamten Kinderobjekte zusammen. Bei einem 100x100 großen Eltern-Rect kann das somit nichts mit Scrollen werden.
  4. Kojote

    Scrollview Problem

    Grüße! Ich hab gerade ein paar Probleme mit dem Scrollview. Ich möchte gern meine Datenschutzerklärung in ein Scrollvie packen, dafür habe ich mehrere Texte in ein Empty gepackt und nutze es so als Elternobjekt. Dieses habe ich dem Scrollview zugewiesen. Problem ist nun dass zum einen der Size des Scrollbuttons immer auf 1 gesetzt wird, egal was ich einstelle. Des weiteren weiß er nicht wann er aufhören soll zu scrollen. Ich kann also nach dem letzten Satz immer weiter nach unten Scrollen und komme nach oben über die Überschrift hinaus. Hier mal meine Einstellungen: Seht ihr, wo das Problem lieg? Danke schon einmal! Kojote
  5. Kojote

    Name heraus finden

    Grüße! Ich suche gerade einen Weg, abzufragen, ob ein Gameobjekt einen bestimmtes Kindobjekt besitzt, wenn ja, welchen Namen dieses trägt. Es geht um folgendes: Ich habe mehrere Spielfelder, auf den meissten soll der Zustand 0 herrschen, Standard, hier passiert nichts. Einige dieser Felder haben jedoch ein Kindobjekt. Ich könnte nun jedes Kind im Inspector zuweisen, dass müsste ich aber jedes mal machen, wenn ich ein neues Level erstelle. Diese Arbeit wollte ich mir gern abnehmen und Fehler verhindern. Deswegen frage ich ab: if (arryHexagon[i].GetComponentInChildren<LineRenderer>() == true) { } else { hexagonFeld[i].typ = 0; } Mit dieser einfachen Abfrage weiß ich schon einmal, dass dieses Gameobjekt ein Kindobjekt hat. Nun muss ich noch heraus bekommen, welchen Namen dieses Kindobjekt trägt. Zu finden wäre der Name: Line Renderer ? Das Fragezeichen würde dabei aus einer Zahl von 1 - 9 bestehen. Ich hatte bisher die Idee es mit einer for-Schleife zu machen, in Kombination mit Find, aber das würde mir ehrlich gesagt zu viel Ressourcen fressen. Habt ihr eine Idee? EDIT: Hatte gerade noch eine Idee und klappt mit einer foreach-Schleife: foreach (Transform suche in arryHexagon[i].transform) { if (suche.name == "Line Renderer 1") { hexagonFeld[i].typ = 1; } else if (suche.name == "Line Renderer 2") { hexagonFeld[i].typ = 2; }
  6. Fast vergessen das Thema, ich hab das Script etwas umgebaut, da ich mit dem Script von Mark nicht richtig zurecht kam. Hoffe ist OK, wenn ich hier eine alternative Version als Hilfe anfüge. using System.Xml; using UnityEngine; using UnityEngine.UI; public class Sprachenmanager : MonoBehaviour { string language; XmlNode nodes; // Hier kommen alle Verbindungen zu den Texten hinein // Variable erstellen und Text im Inspector der Variable zuweißen public Text hauptmenueButtonStart; public void SpracheAendern(string language) { TextAsset textAsset = (TextAsset)Resources.Load("lang"); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(textAsset.text); for (int i = 0; i < xmldoc.ChildNodes[1].ChildNodes.Count; i++) { if (xmldoc.ChildNodes[1].ChildNodes[i].Name == language) { nodes = xmldoc.ChildNodes[1].ChildNodes[i]; } } SpracheTexteAendern(); } private void SpracheTexteAendern() { hauptmenueButtonStart.text = sucheElement("HauptmenueButtonStart"); } public string sucheElement(string elemName) { for (int i = 0; i < nodes.ChildNodes.Count; i++) { if (nodes.ChildNodes[i].Attributes["name"].Value == elemName) { return nodes.ChildNodes[i].InnerText; } } return "Text nicht gefunden!"; } } Hier müsst ihr den Text, den ihr ändern wollt im Inspector schieben, z.B. für den Buttontext Start: public Text hauptmenueButtonStart; Damit wird der Text je nach Sprache geändert, hier für den Buttontext Start: hauptmenueButtonStart.text = sucheElement("HauptmenueButtonStart"); Die XML, lang.xml: <?xml version="1.0" encoding="utf-8"?> <languages> <Englisch> <string name="HauptmenueButtonStart">START</string> </Englisch> <Deutsch> <string name="HauptmenueButtonStart">START</string> </Deutsch> <Franzoesisch> <string name="HauptmenueButtonStart">DÉBUT</string> </Franzoesisch> </languages> Sprache ändern funktioniert so: Sprachenmanager.SpracheAendern("Englisch"); // ODER Sprachenmanager.SpracheAendern("Deutsch"); // ODER Sprachenmanager.SpracheAendern("Franzoesisch");
  7. Könntest du das mit dem Raster etwas näher erläutern? Ich hab bei meinem Projekt etwas ähnliches vor und bin da gerade schwer am grübeln, dass das Abfragesystem sich nicht zu einem kleinen Monster entwickelt.
  8. Gefällt mir sehr gut! Da steckt einiges an Arbeit drin! Mal eine Frage, wie machst du das mit dem Platzieren der Objekte. Nutzt du da eine Art Raster?
  9. Grüß! Sagt mal, kenn sich einer von euch mit dem Googly Play aus? Ich wollte gern eine Statistik zu meinem Spiel einbauen. Habe nun in Googly Play alles eingestellt und die Statistik gestartet. Habe das Paket von Google in mein Spiel gepackt und dieses Script geschrieben. Der Login Funktioniert, der Logout ebenfalls. Jedoch das eintragen der Punkte und auch das Aufrufen des UI funktioniert nicht. Kann mir da wer helfen? using UnityEngine; using GooglePlayGames; using UnityEngine.SocialPlatforms; using GooglePlayGames.BasicApi; public class Google : MonoBehaviour { private void Start() { PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.Activate(); } public void LogIn() { Social.localUser.Authenticate((bool succes) => { if (succes) { Debug.Log("Erfolgreich eingeloggt!"); } else { Debug.Log("Fehler beim Einloggen!"); } }); } public void LogOut() { ((PlayGamesPlatform)Social.Active).SignOut(); } public void PunkteInBestenlisteEintragen() { Social.ReportScore(500, GPGSIds.leaderboard_highscore, (bool success) => { }); } public void BestenlisteAnzeigen() { Social.ShowLeaderboardUI(); } public void SpezielleBestenlisteAnzeigen() { PlayGamesPlatform.Instance.ShowLeaderboardUI(GPGSIds.leaderboard_highscore); } } Grüße von Kojote
  10. Kojote

    Convert Dex Fehler

    Grüße! Ich versuche nun seit geschlagenen 4 Stunden einen Fehler zu beheben. Wenn ich in APK Speichern will kommt, dass es einen Fehler gibt: CommandInvokationFailure: Unable to convert classes into dex format. C:/Program Files/Java/jdk1.8.0_144\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" - stderr[ Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzut; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzuu; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzuv; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzuw; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzux; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzuy; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzuz; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzva; Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzvb; UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.RuntimeException: Translation has been interrupted at com.android.dx.command.dexer.Main.processAllFiles(Main.java:615) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:313) at com.android.dx.command.dexer.Main.runDx(Main.java:291) at com.android.dx.command.dexer.Main.main(Main.java:247) at com.android.dx.command.Main.main(Main.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at SDKMain.main(SDKMain.java:130) Caused by: java.lang.InterruptedException: Too many errors at com.android.dx.command.dexer.Main.processAllFiles(Main.java:607) ... 9 more ] stdout[ ignored resource C:\Users\Maik Glotzkowski\Documents\Unity\HEX\Temp\StagingArea\android-libraries\play-games-plugin-support\libs\.\armeabi-v7a\libgpg.so processing archive C:\Users\Maik Glotzkowski\Documents\Unity\HEX\Temp\StagingArea\android-libraries\play-games-plugin-support\libs\.\classes.jar... processing com/google/games/bridge/BuildConfig.class... processing com/google/games/bridge/NativeBridgeActivity.class... processing com/google/games/bridge/TokenFragment.class... processing com/google/games/bridge/TokenFragment$1.class... processing com/google/games/bridge/TokenFragment$2.class... processing com/google/games/bridge/TokenFragment$3.class... processing com/google/games/bridge/TokenFragment$TokenRequest.class... processing com/google/games/bridge/TokenPendingResult.class... processing com/google/games/bridge/TokenResult.class... ignored resource C:\Users\User\Documents\Unity\Game\Temp\StagingArea\android-libraries\play-games-plugin-support\libs\.\x86\libgpg.so processing archive C:\Users\User\Documents\Unity\Game\Temp\StagingArea\android-libraries\play-services-ads-11.4.0\libs\.\classes.jar... ignored resource META-INF/ ignored resource META-INF/MANIFEST.MF ignored resource com/ ignored resource com/google/ ignored resource com/google/android/ ignored resource com/google/android/gms/ ignored resource com/google/android/gms/ads/ ignored resource com/google/android/gms/ads/internal/ processing com/google/android/gms/ads/internal/ClientApi.class... ignored resource com/google/android/gms/ads/internal/js/ processing com/google/android/gms/ads/internal/js/JavascriptEngineFactory.class... processing com/google/android/gms/ads/internal/js/JavascriptEngineFactory$JSEngineSettableFuture.class... processing com/google/android/gms/ads/internal/js/zza.class... processing com/google/android/gms/ads/internal/js/zzaa.class... processing com/google/android/gms/ads/internal/js/zzab.class... processing com/google/android/gms/ads/internal/js/zzac.class... processing com/google/android/gms/ads/internal/js/zzad.class... processing com/google/android/gms/ads/internal/js/zzae.class... processing com/google/android/gms/ads/internal/js/zzaf.class... processing com/google/android/gms/ads/internal/js/zzag.class... processing com/google/android/gms/ads/internal/js/zzah.class... processing com/google/android/gms/ads/internal/js/zzai.class... processing com/google/android/gms/ads/internal/js/zzaj.class... processing com/google/android/gms/ads/internal/js/zzak.class... processing com/google/android/gms/ads/internal/js/zzb.class... processing com/google/android/gms/ads/internal/js/zzc.class... processing com/google/android/gms/ads/internal/js/zzd.class... processing com/google/android/gms/ads/internal/js/zze.class... processing com/google/android/gms/ads/internal/js/zzf.class... processing com/google/android/gms/ads/internal/js/zzg.class... processing com/google/android/gms/ads/internal/js/zzh.class... processing com/google/android/gms/ads/internal/js/zzi.class... processing com/google/android/gms/ads/internal/js/zzj.class... processing com/google/android/gms/ads/internal/js/zzk.class... processing com/google/android/gms/ads/internal/js/zzl.class... processing com/google/android/gms/ads/internal/js/zzm.class... processing com/google/android/gms/ads/internal/js/zzn.class... processing com/google/android/gms/ads/internal/js/zzo.class... processing com/google/android/gms/ads/internal/js/zzp.class... processing com/google/android/gms/ads/internal/js/zzq.class... processing com/google/android/gms/ads/internal/js/zzr.class... processing com/google/android/gms/ads/internal/js/zzs.class... processing com/google/android/gms/ads/internal/js/zzt.class... processing com/google/android/gms/ads/internal/js/zzu.class... processing com/google/android/gms/ads/internal/js/zzv.class... processing com/google/android/gms/ads/internal/js/zzw.class... processing com/google/android/gms/ads/internal/js/zzx.class... processing com/google/android/gms/ads/internal/js/zzy.class... processing com/google/android/gms/ads/internal/js/zzz.class... ignored resource com/google/android/gms/ads/internal/overlay/ processing com/google/android/gms/ads/internal/overlay/AdOverlayInfoParcel.class... processing com/google/android/gms/ads/internal/overlay/zza.class... processing com/google/android/gms/ads/internal/overlay/zzaa.class... processing com/google/android/gms/ads/internal/overlay/zzab.class... processing com/google/android/gms/ads/internal/overlay/zzac.class... processing com/google/android/gms/ads/internal/overlay/zzad.class... processing com/google/android/gms/ads/internal/overlay/zzae.class... processing com/google/android/gms/ads/internal/overlay/zzaf.class... processing com/google/android/gms/ads/internal/overlay/zzag.class... processing com/google/android/gms/ads/internal/overlay/zzaj.class... processing com/google/android/gms/ads/internal/overlay/zzak.class... processing com/google/android/gms/ads/internal/overlay/zzal.class... processing com/google/android/gms/ads/internal/overlay/zzam.class... processing com/google/android/gms/ads/internal/overlay/zzan.class... processing com/google/android/gms/ads/internal/overlay/zzao.class... processing com/google/android/gms/ads/internal/overlay/zzap.class... processing com/google/android/gms/ads/internal/overlay/zzaq.class... processing com/google/android/gms/ads/internal/overlay/zzar.class... processing com/google/android/gms/ads/internal/overlay/zzas.class... processing com/google/android/gms/ads/internal/overlay/zzat.class... processing com/google/android/gms/ads/internal/overlay/zzau.class... processing com/google/android/gms/ads/internal/overlay/zzb.class... processing com/google/android/gms/ads/internal/overlay/zzc.class... processing com/google/android/gms/ads/internal/overlay/zzd.class... processing com/google/android/gms/ads/internal/overlay/zze.class... processing com/google/android/gms/ads/internal/overlay/zzf.class... processing com/google/android/gms/ads/internal/overlay/zzg.class... processing com/google/android/gms/ads/internal/overlay/zzh.class... processing com/google/android/gms/ads/internal/overlay/zzi.class... processing com/google/android/gms/ads/internal/overlay/zzj.class... processing com/google/android/gms/ads/internal/overlay/zzk.class... processing com/google/android/gms/ads/internal/overlay/zzl.class... processing com/google/android/gms/ads/internal/overlay/zzm.class... processing com/google/android/gms/ads/internal/overlay/zzn.class... processing com/google/android/gms/ads/internal/overlay/zzo.class... processing com/google/android/gms/ads/internal/overlay/zzp.class... processing com/google/android/gms/ads/internal/overlay/zzq.class... processing com/google/android/gms/ads/internal/overlay/zzr.class... processing com/google/android/gms/ads/internal/overlay/zzs.class... processing com/google/android/gms/ads/internal/overlay/zzt.class... processing com/google/android/gms/ads/internal/overlay/zzu.class... processing com/google/android/gms/ads/internal/overlay/zzv.class... processing com/google/android/gms/ads/internal/overlay/zzw.class... processing com/google/android/gms/ads/internal/overlay/zzx.class... processing com/google/android/gms/ads/internal/overlay/zzy.class... processing com/google/android/gms/ads/internal/overlay/zzz.class... processing com/google/android/gms/ads/internal/zza.class... processing com/google/android/gms/ads/internal/zzaa.class... processing com/google/android/gms/ads/internal/zzab.class... processing com/google/android/gms/ads/internal/zzac.class... processing com/google/android/gms/ads/internal/zzad.class... processing com/google/android/gms/ads/internal/zzae.class... processing com/google/android/gms/ads/internal/zzaf.class... processing com/google/android/gms/ads/internal/zzag.class... processing com/google/android/gms/ads/internal/zzah.class... processing com/google/android/gms/ads/internal/zzai.class... processing com/google/android/gms/ads/internal/zzaj.class... processing com/google/android/gms/ads/internal/zzak.class... processing com/google/android/gms/ads/internal/zzal.class... processing com/google/android/gms/ads/internal/zzam.class... processing com/google/android/gms/ads/internal/zzan.class... processing com/google/android/gms/ads/internal/zzao.class... processing com/google/android/gms/ads/internal/zzap.class... processing com/google/android/gms/ads/internal/zzaq.class... processing com/google/android/gms/ads/internal/zzar.class... processing com/google/android/gms/ads/internal/zzas.class... processing com/google/android/gms/ads/internal/zzat.class... processing com/google/android/gms/ads/internal/zzau.class... processing com/google/android/gms/ads/internal/zzav.class... processing com/google/android/gms/ads/internal/zzaw.class... processing com/google/android/gms/ads/internal/zzax.class... processing com/google/android/gms/ads/internal/zzay.class... processing com/google/android/gms/ads/internal/zzaz.class... processing com/google/android/gms/ads/internal/zzb.class... processing com/google/android/gms/ads/internal/zzba.class... processing com/google/android/gms/ads/internal/zzbb.class... processing com/google/android/gms/ads/internal/zzbc.class... processing com/google/android/gms/ads/internal/zzbd.class... processing com/google/android/gms/ads/internal/zzbe.class... processing com/google/android/gms/ads/internal/zzbf.class... processing com/google/android/gms/ads/internal/zzbg.class... processing com/google/android/gms/ads/internal/zzbh.class... processing com/google/android/gms/ads/internal/zzbi.class... processing com/google/android/gms/ads/internal/zzbj.class... processing com/google/android/gms/ads/internal/zzbk.class... processing com/google/android/gms/ads/internal/zzbl.class... processing com/google/android/gms/ads/internal/zzbm.class... processing com/google/android/gms/ads/internal/zzbn.class... processing com/google/android/gms/ads/internal/zzbo.class... processing com/google/android/gms/ads/internal/zzbp.class... processing com/google/android/gms/ads/internal/zzbq.class... processing com/google/android/gms/ads/internal/zzbr.class... processing com/google/android/gms/ads/internal/zzbs.class... processing com/google/android/gms/ads/internal/zzbt.class... processing com/google/android/gms/ads/internal/zzbu.class... processing com/google/android/gms/ads/internal/zzbv.class... processing com/google/android/gms/ads/internal/zzbw.class... processing com/google/android/gms/ads/internal/zzbx.class... processing com/google/android/gms/ads/internal/zzc.class... processing com/google/android/gms/ads/internal/zzd.class... processing com/google/android/gms/ads/internal/zze.class... processing com/google/android/gms/ads/internal/zzf.class... processing com/google/android/gms/ads/internal/zzg.class... processing com/google/android/gms/ads/internal/zzh.class... processing com/google/android/gms/ads/internal/zzi.class... processing com/google/android/gms/ads/intern Nach 4 Stunden frag ich nun mal euch, ob ihr ne Idee habt mit dem Fehler, bisherige Problemlösungen haben nicht gebracht. EDIT: Habe den Fehler nun auf "GooglMobileAds" und "GooglePlayGames" eingekreist. Ohne beide funktioniert alles, je eines von beiden im Projekt funktioniert auch. Nur beide zusammen mögen sich nicht. Da beides von Google ist sollte man doch meinen die Packages vertragen sich... Denkste.^^ EDIT 2: So, für alle die auch ne Lösung suchen. Zumeißt wird das Problem auf das FacebookSDK und GooglePlayGames geschoben. Ich hab das selbe Problem mit GooglyMobileAds und GooglePlayGames gehabt. Ich hatte mehrere doppelte Dateien in verschieden Versionen. Sucht im Asset Ordner mal nach dem Stichwort "play" und "service". Bei mir waren diese Dateien doppelt, wie gesagt mit unterschiedlicher Version: play-services-ads-11.4.0 play-services-auth-11.4.0 play.services-base-11.4.0 play-services-drive-11.4.0 play-services-games-11.4.0 Grüße von Kojote
  11. Kojote

    Android Path

    Fehler gefunden: FileStream fileStream = File.Open("jar:file://" + Application.persistentDataPath + "/db/spielerdaten.dat", FileMode.Open); Richtig müsste es heißen: FileStream fileStream = File.Open(Application.persistentDataPath + "/spielerdaten.dat", FileMode.Open); Da war ein Ordner nicht vorhanden. Kleiner Fehler, große Wirkung!
  12. Kojote

    Android Path

    Grüße! Habe gerade ein paar Probleme Daten in Android zu schreibe. Im Awake befindet sich dieser Teil: if (Application.isMobilePlatform == true) { if (File.Exists("jar:file://" + Application.persistentDataPath + "/db/spielerdaten.dat")) { BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream = File.Open("jar:file://" + Application.persistentDataPath + "/db/spielerdaten.dat", FileMode.Open); Spielderdaten data = (Spielderdaten)binaryFormatter.Deserialize(fileStream); einstellungZahlHilfe = data.einstellungZahlHilfe; einstellungZahlSprache = data.einstellungZahlSprache; einstellungZahlSpielzeit = data.einstellungZahlSpielzeit; einstellungZahlStatistik = data.einstellungZahlStatistik; einstellungZahlWachbleiben = data.einstellungZahlWachbleiben; einstellungZahlLinkshaenderModus = data.einstellungZahlLinkshaenderModus; einstellungZahlMusikProzentZahl = data.einstellungZahlMusikProzentZahl; einstellungZahlSFXProzentZahl = data.einstellungZahlSFXProzentZahl; einstellungZahlMusikTrackNummer = data.einstellungZahlMusikTrackNummer; fileStream.Close(); } else { SpieleMenueSpeichern(); } } else { if (File.Exists(Application.dataPath + "/spielerdaten.dat")) { BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream = File.Open(Application.dataPath + "/spielerdaten.dat", FileMode.Open); Spielderdaten data = (Spielderdaten)binaryFormatter.Deserialize(fileStream); einstellungZahlHilfe = data.einstellungZahlHilfe; einstellungZahlSprache = data.einstellungZahlSprache; einstellungZahlSpielzeit = data.einstellungZahlSpielzeit; einstellungZahlStatistik = data.einstellungZahlStatistik; einstellungZahlWachbleiben = data.einstellungZahlWachbleiben; einstellungZahlLinkshaenderModus = data.einstellungZahlLinkshaenderModus; einstellungZahlMusikProzentZahl = data.einstellungZahlMusikProzentZahl; einstellungZahlSFXProzentZahl = data.einstellungZahlSFXProzentZahl; einstellungZahlMusikTrackNummer = data.einstellungZahlMusikTrackNummer; fileStream.Close(); } else { SpieleMenueSpeichern(); } } Beim ersten Start, kann die Datei gar nicht vorhanden sein, also würde die Else-Klausel aufgrufen: private void MenueEinstellungenSpeichern() { BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream fileStream; if (Application.isMobilePlatform == true) { fileStream = File.Create("jar:file://" + Application.persistentDataPath + "!/assets/" + "/db/spielerdaten.dat"); } else { fileStream = File.Create(Application.dataPath + "/spielerdaten.dat"); } Spielderdaten data = new Spielderdaten(); data.einstellungZahlHilfe = einstellungZahlHilfe; data.einstellungZahlSprache = einstellungZahlSprache; data.einstellungZahlSpielzeit = einstellungZahlSpielzeit; data.einstellungZahlStatistik = einstellungZahlStatistik; data.einstellungZahlWachbleiben = einstellungZahlWachbleiben; data.einstellungZahlLinkshaenderModus = einstellungZahlLinkshaenderModus; data.einstellungZahlMusikProzentZahl = einstellungZahlMusikProzentZahl; data.einstellungZahlSFXProzentZahl = einstellungZahlSFXProzentZahl; data.einstellungZahlMusikTrackNummer = einstellungZahlMusikTrackNummer; binaryFormatter.Serialize(fileStream, data); fileStream.Close(); } Wie ihr seht, frage ich ab, ob es sich um ein Android System handelt oder ob es sich um ein normales Windows System handelt. In Windows funktioniert nach dem Compilieren alles ohne Problem. Die Dateien werden angelegt und aus ihnen kann auch gelsen werden. Anders siehts jedoch in Android aus, hier wird aus irgend einem Grund die Datei nicht erstellt. Ich habe mich hier ans Manual gehalten: https://docs.unity3d.com/Manual/StreamingAssets.html Sehr ihr den Fehler oder könnt mir weiter helfen? Vielen Dank und Grüße von Kojote
  13. Grüße! Wenn man ein GUI aktiviert bzw. deaktiviert macht man das ja über die Methode "SetAktive". Was mich gerade etwas stört ist, dass das GUI plötzlich da ist. Gibt es eine möglichkeit das GUI sanft ein- bzw. auszublenden, in etwa über die Deckkraft der Grafik? Danke schon mal und wie immer Grüße vom Kojoten
  14. Kojote

    Pfad

    Hallo! Ich hatte vor einer weile mal ein Tutorial gelesen, in dem man eine Kamera, wie an einer Schnur herum fahren lassen konnte. Leider finde ich es nicht mehr. Meine Frage wäre, kennt ihr so etwas, nach was müsste ich da suchen? Ich wollte GameObjekte an so einer Schnur bewegen lassen und an bestimmten Punkten Aktionen auslösen lassen. Wäre so etwas möglich? Grüße von Kojote
  15. Grüße! Mal eine Frage, ich wollte gern eine Liste im Gui machen, die nach oben und unten gescrollt werden kann. z.B.: Gruppe 1 Gruppe 2 Gruppe 3 Gruppe 4 Gruppe 5 Wenn man dann auf eine der Gruppen klickt, fährt sich ein Dropdown aus: Gruppe 1 - Unterpunkt 1 - Unterpunkt 2 - Unterpunkt 3 - Unterpunkt 4 - Unterpunkt 5 Gruppe 2 Gruppe 3 Gruppe 4 Gruppe 5 Ich dachte das ich das eventuell über einen Scrollview in Verbindung mit einem Drop Down machen könnte. Leider bekomme ich es nciht hin, ein Drop Down in den Scroll View zu bekommen, es wird einfach nicht angezeigt. Leider hab ich auch keine Tutorials zu gefunden. Ist das eigentlich theoretisch möglich oder setze ich da schon komplett falsch an? Wie macht man so etwas, was ich vor habe bzw. wenn ich auf dem richtigen Weg bin, wie binde ich das Drop Down ein? Des weiteren, wie mache ich es, dass das Drop Down nicht über den Gruppenpunkten angeziegt wird? Vielen Dank schon einmal und grüße von Kojote
  16. Habe nun noch einmal ein anderes Script versucht, selbes Problem, beim Laden der XML Datei. xmldoc.LoadXml(textAsset.text); Hier mal der Code: string language; XmlNode nodes; // Übersetzungstexte public Text beispielText; void Awake() { if (SystemLanguage.German == Application.systemLanguage) { language = "German"; } else { language = "English"; } TextAsset textAsset = (TextAsset)Resources.Load("lang"); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(textAsset.text); for (int i = 0; i < xmldoc.ChildNodes[1].ChildNodes.Count; i++) { if (xmldoc.ChildNodes[1].ChildNodes[i].Name == language) { nodes = xmldoc.ChildNodes[1].ChildNodes[i]; } } } // Use this for initialization void Start() { beispielText.text = sucheElement("Test"); } public string sucheElement(string elemName) { for (int i = 0; i < nodes.ChildNodes.Count; i++) { if (nodes.ChildNodes[i].Attributes["name"].Value == elemName) { return nodes.ChildNodes[i].InnerText; } } return ""; } Edit: Das ist der Knackpunkt: TextAsset textAsset = (TextAsset)Resources.Load("lang"); Lade Datei "lang" ist richtig, "Resources" bezieht sich auf eine Klasse, diese Klasse erwartet den Ordner "Resources" im Ordner "Asset". Schiebt man da die "lang" Datei hinein, ist alles in Butter und funktioniert!
  17. Vielen Dank, genau danach hatte ich gerade gesucht! Edit: So ganz funktionierts noch nicht, habe nun alle Scripte übernommen und wolle nun gern mal einen Text festlegen, bei mir siehts jetzt so aus: public class StringLaden : MonoBehaviour { public StringTabele stringTabelle; public Text neuesSpiel; void Start () { neuesSpiel.text = stringTabelle.Default.GetString("Dialogs.Yes"); } } Jedoch bekomme ich "stringTabelle.Default" rot unterstrichen. Er meint: "Auf den Member kann nicht mit einem Instanzverweis zugegriffen werden. Qualifizieren sie ihn stattdessen mit einem Typen." Also so richtig versteh ich nicht, was er meint, habe doch alles nach Anleitung gemacht. EDIT 2: OK, Fehler gefunden, ich habe nicht über die Klasse sondern über einen Member zugegriffe. Edit 3: Problem erkannt, Gefahr gebannt, funktioniert leider immer noch nicht. Habe nun die "StringTable.cs" und die "Translation.cs" in den Inspector gezogen. "Current Languaga" und "Default Language" sind auf "en" gestellt. In Locale ist "Language" und "Path" leer. Ich habe zudem eine "default.xml" im selben Ordner wie die Scripts, in einem Unterordner namens "strings" noch einmal eine "defautl.xml" und die anderen Sprachdateien. Fehlermeldung gibt es eine, wenn ich das Spiel beende, Strings in den XMLs sind vorhanden, jedoch wird der neue, englische String nicht geladen. Fehlermeldung: NullReferenceException: Object reference not set to an instance of an object Zeile: using (var stream = new MemoryStream(textAsset.bytes)) {
  18. Kojote

    AdMob

    Grüße! Habe gerade ein kleines Problem, meine App geht in den Endspurt und möchte gerade AdMob einfügen. Das Asset dafür habe ich schon importiert, der nächste Schritt ist: Set the unityplayer.ForwardNativeEventsToDalvik tag to true in your main Unity activity to ensure that ads are clickable (highlighted below): <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /> </activity> In AndroidStudio wüsste ich wo ich suchen soll, jedoch bei Unity habe ich gerade keine Ahnung wo ich das eintragen soll. Hier wäre mal der Link: https://developers.google.com/admob/unity/start Könnt ihr mir hier weiter helfen? Viele Grüße von Kojote EDIT: Problem gelöst!
  19. Kojote

    Partikel im UI

    Grüße! Da ich selbst eine ganze weile gesucht habe, um heraus zu bekommen, wie man Partikel im UI anzeigen lassen kann, hier mal ein interessanter Link: https://www.linkedin.com/pulse/unity-ui-particle-system-chan-calvin Kojote
  20. Kojote

    onClick ändern

    Grüße! Ich habe mehrere Objekte die auf die selbe Tastatur zugreifen sollen. Wenn ein Objekt selektiert wird, soll die Tastatur für das selektierte Projekt verwendet werden, später wieder für ein anderes. Ich habe die halbe Miete mit diesem Stückchen hier: enter.GetComponent<Button>().onClick.AddListener(EingabeBestaetigen); Er sucht also nach der Methode "EingabeBestaetigen". Problem ist, ich weiß nicht wie ich ihm sagen soll, in welchem GameObjekt er nach genau dieser Methode suchen soll. Könnt ihr mir da weiter helfen? Vielen Dank schon einmal!
  21. Kojote

    Kein Ruhezustand

    Grüße! Sagt mal, es gibt doch sicherlich eine Möglichkeit per Script einzustellen, ob der Tablet beim Spielen in den Ruhezustand gehen darf bzw. der Bildschirm abgedunkelt werden darf oder eben nicht. Ich such schon eine ganze weile, leider fehlt mir der passende Suchbegriff. Könnt ihr mir sagen, unter was ich suchen muss bzw. wie man dies macht? Grüße Kojote EDIT: Glaube ich hab es gefunden: Screen.sleepTimeout = SleepTimeout.NeverSleep;
  22. Grüße! Mal ne Frage, ich möchte gern einen Button deaktivieren können. Die normale Möglichkeit ist ja: button1.GetComponent<Button>().interactable = false; Ungünstig ist für mich jetzt, dass wenn ich ihn deaktiviere der Button halbtransparent wird. Gibt es eine Möglichkeit ihn abzuschalten und er bleibt in der Grafik bzw. mit der Farbe bestehen, die er so eben hat? Danke schon mal! Kojote EDIT: Hab was gefunden: button1.GetComponent<Button>().enabled = false;
  23. Grüße! Beim stöbern durch den Asset Store habe ich zwei interessante Assets gefunden.Den Terrain Generator Gaia: https://assetstore.unity.com/packages/tools/user-tools/terrain/gaia-42618 und den World Creator: https://assetstore.unity.com/packages/tools/user-tools/terrain/world-creator-professional-55073 Ich finde sie sehen beide sehr gut aus und haben beide sehr viel Zusätze aller Flora und Faune dabei. Frage wäre mal, kennt bzw. nutzt jemand diese Assets? Was haltet ihr von den beiden und könnt ihr etwas empfehlen? Sie scheinen einiges mehr an Polys zu verbrauchen, sind solche Generatoren eigentlich für Netzwerkspiele geeignet. Mal abgesehen davon, dass man die Sichtweite sehr runter schraubt um mit den Datenmengen klar zu kommen? Danke euch schonmal für die Hilfe!
  24. Grüß Euch! Da nun meine erste App langsam aus den Kinderschuhen raus ist, funktioniert und nur noch die Textur braucht und ein paar Kleinigkeiten. Will ich mich langsam dem nächsten Projekt zu wenden und schon mal ein paar Vorinformationen holen. Geplant ist ein kleines Multiplayer Spiel, wie man es schon vermutet, ich bin Anfänger und wird mein erstes Multiplayer Spiel. Hierzu würde ich gern eine kleine Gesprächsrunde beginnen und einmal eure Meinung hören, damit ich ungefähr abschätzen kann, wohin die Reise geht. Geplant sind erst einmal zwei Terrains, die je in einer Szene sind und man durch Teleport erreichen kann. Erste Frage wäre schon einmal, wie groß können Terrains sein, bzw. welchen Polycount vertragen sie überhaupt. Habe da leider keinerlei Anhaltswerte gefunden. Mein Gedanke war, in der Szene mehrere kleine Terrains zu erzeugen und nur die Bereiche zu laden, die derzeit für den Spieler relevant sind, andere wieder zu löschen, um Performance zu sparen. Frage Zwei wäre nun, was machen NPC`s in deisen Bereich, die der Spieler nicht sieht, werden hier trotzdem Bewegungen und der gleichen berechnet? Somit wären wir bei Frage drei, leider habe ich bisher keine guten Tutorials gefunden, die wirklich Steo by Step mal anschaulich erklären, wie man was aufbaut. Wie eine Serververbindung programmiert wird und funktioniert, Benutzerkonten angelegt werden, irgendwann mal Chat, ect. Könnt ihr mir da irgendwelche Tipps für Tutorials geben (bevorzugt auf Deutsch^^). Des weiteren, ich habe gelesen, dass man einen Headless Client benötigt, wenn der Server selbst und nicht ein Spieler hosten soll. Schon einmal vielen Dank für eure Mühen!
  25. Grüße! Mal ne Frage zum Themennamen, ich habe jetzt diesen Aufruf eines Prefabs: GameObject.Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y + 0.05f, transform.position.z - 0.60f), Quaternion.Euler(new Vector3(0, 0, 0))); Ich möchte nun das neue Objekt hinter dem Parent GameObject erzeugen lassen, egal wohin das Parent GameObject schaut. Problem an diesem Scriptschnipsel ist, dass das Prefab nur hinter dem Spieler erzeugt wird, wenn er nach Positiv Z schaut. Das Prefab richtet sich also nach World-Coordinaten aus. Wie kann ich ihn denn an das Eltern Objekt ausrichten? Grüße Kojote
×
×
  • Neu erstellen...