Jump to content
Unity Insider Forum

Sir_Mathew

Members
  • Content Count

    35
  • Joined

  • Last visited

  • Days Won

    1

Sir_Mathew last won the day on December 28 2020

Sir_Mathew had the most liked content!

Community Reputation

1 Neutral

About Sir_Mathew

  • Rank
    Advanced Member

Recent Profile Visitors

41 profile views
  1. Hast du statt schwarz auch mal probiert einfach die die Textur zu löschen? Ich meine mit ein Radiergummi etc. Ich weiß nicht wie das in Unity ist, ich komme von 3d Gamestudio. Hab gerade nochmal nachgelesen und da steht das z.b. bmap keinen Alpha Kanal hat und man diese Scripttechnisch hinzufügen muss. Wie das in Unity weiß ich nicht. In 3D Gamestudio gab es auch Shader die mal schwarz aber auch gelöschte Textur Abschnitte transparent anzeigen. Also vielleicht an dein Bildformat arbeiten...? Ich hab immer TGA Format benutzt das hat nämlich RGB-Alphakanal Auch DDS, PNG, PSD, oder TIFF sollen einen Alphakanal besitzen, aber ich glaub hab es nie genommen wegen irgendwelchen nachteilen Speichergröße etc... Probier mal TGA Format mit schwaz und gelöschten Abschnitten mal aus. Wäre interessant ob es klappt.
  2. Schade das ich noch immer keine Antwort bekommen habe. Wollte statt PlayerPrefs.SetString("taste",..... nur PlayerPrefs.SetString(stringTaste,... machen, damit ich in meinen String einen Passenden Namen erstellen kann und zur Laufzeit ändern kann, ohne fest "tast1" "taste2" etc. zu machen. Habs nun einzeln geschrieben, muss doch aber auch besser gehen. Ich Probiere derzeit ganz schön viel rum und bin auf etwas gestoßen was mich irre macht. Und zwar lade ich die gedrückte Taste mit Input.inputString in einen String. Aber das Problem ist, das nicht jede Taste auf der Tastatur damit erfasst wird. Alles was als Tastenbezeichnung länger wie 1 Zeichen ist, wie Pfeil Tasten, die ja mit left und right bezeichnet sind. Kann man nicht irgendwie dieses Tasten auch auslesen irgendwie?
  3. Dann musst du wohl oder übel 1 nach dem anderen prüfen. In mein einfachen Test using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { float lichtSteigerung = 0.1f; public GameObject lantern; // Update is called once per frame void LateUpdate() { lantern.GetComponent<Light>().intensity += lichtSteigerung; Debug.Log(lichtSteigerung); } } Funktioniert es wunderbar. If Abfrage rausnehmen und schaun ob dein Licht geht. Wenn ja die einzelnen If Bedingungen prüfen bzw. dein foreach etc. Es muss einer der Abragen sein, die auf 640 Begrenzen. Sehe gerade das das Funktionsaufruf WaitAndLight auch in einer Abfrage steckt. Kann auch an dieser Abrage Hapern. Wie gesagt alle Abfragen nach und nach rausnehmen bis es geht und dann siehste erstmal welche Abrage daran Schuld ist etc.
  4. Hä? Es hatte funktioniert dann hast du was gemacht und dann nicht mehr funktioniert und dann hast du nochmal alles umgebaut ohne erstmal den Fehler zu finden??? Stell doch einfach erstmal alles wieder so, das es funktioniert und geh dann immer ein schritt weiter bis es nicht mehr geht, dann weißt du was das Problem ist. Wäre das gleiche als würde sich der Player mit w nicht mehr vorwärts bewegen, dann baut man das komplette Spiel weiter auf den Fehler auf... Dann irgendwann hat man den Fehler gefunden und merkt das zum beheben des Fehlers das ganze Spiel geändert werden muss. Ohje Ohje Ach und übrigens 999+ ist kein Maximum beim aufrufen. Ist doch nur die Anzahl der Meldungen die über 999 ist und im Log steht es doch auch genauer. Und die Anzahl hat auch keine Bedeutung. Es ist wichtig ob der Log regelmäßig zählt oder z.b. nach 300 aufrufen 10min. Pause macht etc. Aber wie gesagt, um aufgerufene Bedingungen zu Testen sind Debug.Log´s eine sehr gute Methode das zu testen. Mich irritiert auch deine Gleichung += Wie wird deine lichtsteigerung Variable errechnet usw. setz doch einfach mal 8 rein und schau ob dein licht auf 8 geht, dann würde die Variable schuld sein. Diese kannst du auch im Debug.Log checken usw.... Wie der gute @sascha schon sagte, zeig Code her
  5. Setz doch einfach Mal dein Debug.Log in die If Zeile und schau wie oft die durchläuft.
  6. Mir ist da gerade noch etwas eingefallen. Deine sogenannte APK Datei.... Lass mich raten, dies übersetzt dein Code in ein Handy Betriebssystem? Weißt du denn genau was sie macht? Greift diese vielleicht auf Daten zu? Zu deiner Meldung oben, steht im Netz Mobiltelefon, Gerät ID & Anrufinformation - “android.permission.READ_PHONE_STATE” Wire benutzt diese Information, um deine Telefonnummer für Kontaktverbindungen zu erkennen. Hmmmm also holt sie sich die Telefonnummer. Wozu? Vermutlich um beim APP verkauf den Käufer zu identifizieren. Von wo was wie hast denn du die APK Datei erstellt? Der Anbieter hat sicherlich eine Datenschutzerklärung, entweder als Datei bei dir auf dein PC oder einen Link. Ein Link wäre wohl da beste, dann kannst du diesen Link im Google Store hinterlegen,nehme ich an....
  7. Für jede App brauchst du das. Google Store sieht nicht was deine App macht und der Benutzer auch nicht. Du könntest im Hintergrund Bankdaten abfragen, oder sonstiges. Damit sagst du halt, was die Appy auf dem Handy machst. Und ich denke selbst das Speichern auf dem Handy und wieder Laden des Highscores ist ein Zugriff aufs Handy und muss mitgeteilt werden. Keiner sieht den Code deiner App, auch wenn man es sehen kann, keiner von denen sind Programmierer weder der Benutzer noch der App Store, der eigentlich nur eine Verkaufsplattform ist. Schau dir mal die Seite an https://www.iubenda.com/blog/datenschutzerklarung-fur-android-apps/#legislation Da wird alles erklärt und die Generieren wohl auch eine Datenschutzerklärung für dich. Hab ich aber nicht getestet. Da steht auch was von Drittanbieter etc... evtl. schaltest du durch Drittanbieter auch Werbung. Übrigens, wenn du etwas verkaufst oder Geld verdienst, also etwas ins Netz stellst mit Gewinnabsicht, musst du das dem Finanzamt melden und ein Kleingewerbe etc. anmelden. Also Selbstständigkeit. Die Anmeldung soll je nach Bundesland ca. 60€ kosten um dich beim Gewerbeamt anzumelden. Also alles was Geld einbringt benötigt sowas. Eigentlich selbst wenn man etwas gebrauchtes über Handelsplatformen verkauft, aber da gibt es Außnahmen, da man ja nicht 100mal das selbe verkauft, sondern 1 mal einen Gegenstand und dann ist er ja nicht mehr in deinen Besitz. Ach Rechtslagen sind so Komplex. Wenn man Geld verdienen will, muss man vorher schon Geld haben um sich Rechtsberatung, Anmeldung beim Gewerbeamt und Finanzamt evtl. auch ein Finanzberater/Steuerberater usw... Das ist nur ein Rat und keine Rechtsberatung. Wenn du damit kein Geld verdienst, brauch man sowas nicht, man kann ja erstmal gucken wie es läuft und dann immer noch Werbung schalten etc. wobei man das alles ganz schnell nachholen muss, auch eine Änderung der Datenschutzerklärung. Vielleicht schreibt schreibt ja noch jemand, der nicht nur auf die Theorie sondern der praktische Erfahrung mit dem Play Store hat
  8. Ich nehme an das du mit Phone_State auf Geräte Standort zugreift. Hab Mal nach APK Datenschutzerklärung und wurde sofort fündig. Also du musst eine Datenschutzerklärung erstellen in der steht ob und welche Personenbezogene Daten, wie Geräte Standort, Zugriff auf Kamera, Bilder, Musik,Telefonnummer usw. du vom Gerät von deiner App ausliest und ob du die Daten an Dritte weiter gibst oder für was du die Daten bei der App brauchst. Das muss der App Nutzer einsehen können. Das liegt nicht an Unity. Google Play selbst wird dir da auch nicht helfen. Am besten zum Rechtsanwalt gehen, der dir dir vielleicht sowas schreibt etc. Datenschutz ist vor allem in Deutschland ein großes Thema. Schönes Beispiel. Du baust dir auf dein Grundstück eine Kamera die aber auch vor deiner Grundstücks Grenze Filmt. Dann musst du ein Schild aufstellen der z.b. so aussieht. Video Überwachung Grund:Einbruchschutz Speicherung der Aufnahmen: 48Stunden. Datenschutzbeauftragter: z.b. Dein Name. Noch besseres Beispiel: Wenn ein Supermarkt ihren eigen Parkplatz hat und er Richtlinien dafür hat wie z.b. Parken nur mit Parkscheibe, dann muss er die Richtlinien gut Lesbar am Eingang aufstellen. Unterlässt er es, macht er sich sogar strafbar wenn er ein Auto abschleppen lässt weil keine Parkscheibe vorhanden ist. Also kurz gesagt, jeder Nutzer muss beim installieren jeglicher Software informiert werden welchen Daten erhoben werden und zu welchen Zweck. Meistens muss man vor dem installieren die AGB, Datenschutz, Lizenz etc. Zustimmen. Lass dich lieber vom Rechtsanwalt für Rechte im Internet etc. Beraten. Kann sonst teuer werden. Hoffe konnte mit mein schlauen Halbwissen dir weiterhelfen.
  9. Erstmal den Pfad rausfinden, sowohl von deinen Unity Button als auch von dem Unity von deiner Suche. In beiden Unity Rechtsklick und Eigenschaften auswählen und erstmal den Pfad angucken wo er Unity öffnen will. "C:\Program Files\Unity\Hub\Editor\2019.4.15f1\Editor\Unity.exe" sowas müsst da stehen. Vielleicht hat Unity ein update gemacht und nun eine neue Version und die alte hast du gelöscht und der Unity Button ist noch alt etc... Ah sehe gerade man kann im Unity Hub unter Installs die instalilierten Versionen sehen. So wenn du beide Pfade für Unity hast, folge diesen Pfaden einfach mal Manuell. Übern Arbeitsplatz die Festplatte aufwählen und die Pfade folgen. Wenn du die Unity.Exe gefunden hast, kannst du den Unity Button Pfad anpassen. Bzw. kannst auch vom Funktionierenden Unity einfach den Pfad kopieren und in den nicht Funktionierenden Unity Pfad reinkopieren. Die Projekte selbst werden Standartmäßig in Dokumente/Unity Projects gespeichert und ist übern Arbeitsplatz links neben den Festplatten zu erreichen. Hoffe ich konnte dir da weiter Helfen.
  10. So hab nun noch einiges rumprobiert. Wollte nun alles mit PlayerPrefs speichern und laden. Und das funktioniert leider nicht wie erhofft. private static string[] stringTastePlayer = new string[15]; void Start() { stringTaste = PlayerPrefs.GetString(stringTastePlayer[intButtonID]); } private IEnumerator IEnumWhile() { code....... stringTastePlayer[intButtonID] = stringTaste; PlayerPrefs.SetString(stringTastePlayer[intButtonID], stringTastePlayer[intButtonID]); } Also erstelle ein Array. in diese lade ich dann meine Taste, funktioniert bis dahin alles. Aber das Speichern und laden von Array´s funktioniert so nicht? Eigentlich würde man ja stringTaste = PlayerPrefs.GetString("taste"); und PlayerPrefs.SetString("taste", stringTastePlayer[intButtonID]); schreiben. Ich wollte das aber dynamischer speichern und nicht für jeden einzelnen Wert einen Text zufügen. Ist das irgendwie möglich?
  11. So hab vieles gelernt bis hier her. Nun hab ich ein kleines Problem, mir fehlt hier ein Ansatz using System.Collections; using UnityEngine; using UnityEngine.UI; //using System.Collections.Generic; //using UnityEditor; public class Tastatur : MonoBehaviour { public Button buttonButton; public string stringTaste = ""; public int intButtonID = 0; private string stringButtonBeschriftung = ""; private string stringGleichheitszeichen = "="; private string stringSternchen = "*"; private string stringLücke = " "; private string stringEndText = ""; private Color colorButton; private ColorBlock cb; private int intWhile = 0; static int scriptZähler = 0; // Start is called before the first frame update void Start() { stringTaste = PlayerPrefs.GetString("stringTaste"); buttonButton.GetComponentInChildren<Text>().fontSize = 12; buttonButton.GetComponentInChildren<Text>().alignment = TextAnchor.MiddleLeft; stringButtonBeschriftung = buttonButton.name; stringEndText = stringLücke + stringLücke + stringLücke + stringButtonBeschriftung + stringLücke + stringGleichheitszeichen + stringLücke + stringTaste; buttonButton.GetComponentInChildren<Text>().text = stringEndText; scriptZähler++; ButtonFarbeGrundeinstellung(); Debug.Log(scriptZähler); //test Debug.Log(stringTaste); //test } private void Update() { if ((stringTaste == Input.inputString) && (intButtonID == 1)) { Debug.Log("getroffen1"); } if ((stringTaste == Input.inputString) && (intButtonID == 2)) { Debug.Log("getroffen2"); } } void ButtonFarbeGrundeinstellung() { colorButton = new Vector4(0.0f, 1.0f, 0.0f, 1.0f); //Button Farbe Normal Color cb = buttonButton.colors; cb.normalColor = colorButton; buttonButton.colors = cb; colorButton = new Vector4(0.3f, 1.0f, 0.7f, 1.0f); //Button Farbe Highlighted Color cb = buttonButton.colors; cb.highlightedColor = colorButton; buttonButton.colors = cb; colorButton = new Vector4(0.8f, 1.0f, 0.7f, 1.0f); //Button Farbe Pressed Color cb = buttonButton.colors; cb.pressedColor = colorButton; buttonButton.colors = cb; colorButton = new Vector4(1.0f, 0.0f, 0.0f, 1.0f); //Button Farbe Selected Color cb = buttonButton.colors; cb.selectedColor = colorButton; buttonButton.colors = cb; } void ButtonFarbeKlick() { colorButton = new Vector4(1.0f, 0.0f, 0.0f, 1.0f); //Button Farbe Normal Color cb = buttonButton.colors; cb.normalColor = colorButton; buttonButton.colors = cb; colorButton = new Vector4(1.0f, 0.0f, 0.0f, 1.0f); //Button Farbe Highlighted Color cb = buttonButton.colors; cb.highlightedColor = colorButton; buttonButton.colors = cb; colorButton = new Vector4(1.0f, 0.0f, 0.0f, 1.0f); //Button Farbe Pressed Color cb = buttonButton.colors; cb.pressedColor = colorButton; buttonButton.colors = cb; colorButton = new Vector4(1.0f, 0.0f, 0.0f, 1.0f); //Button Farbe Selected Color cb = buttonButton.colors; cb.selectedColor = colorButton; buttonButton.colors = cb; } public void ButtonKlick() { ButtonFarbeKlick(); StartCoroutine(IEnumWhile()); } private IEnumerator IEnumWhile() { intWhile = 0; stringEndText = stringLücke + stringLücke + stringLücke + stringButtonBeschriftung + stringLücke + stringGleichheitszeichen + stringLücke + stringSternchen + stringSternchen + stringSternchen; buttonButton.GetComponentInChildren<Text>().text = stringEndText; while (intWhile < 1) { if (Input.inputString != "") //Läuft wenn eine Taste gedrückt wird { intWhile = 1; stringEndText = stringLücke + stringLücke + stringLücke + stringButtonBeschriftung + stringLücke + stringGleichheitszeichen + stringLücke + Input.inputString; buttonButton.GetComponentInChildren<Text>().text = stringEndText; stringTaste = Input.inputString; ButtonFarbeGrundeinstellung(); PlayerPrefs.SetString("stringTaste", stringTaste); } yield return null; // Einen Frame warten } } } Hab nun die Individuelle Tastenzuordnung eigentlich soweit Fertig. Jeder Button nutzt das gleiche Script mit verschiedenen Instanzen. Mit static int scriptZähler zähle ich nun die Instanzen Soweit so gut. Mit PlayerPrefs.SetString("stringTaste", stringTaste); speicher ich die gewählte Taste und mit stringTaste = PlayerPrefs.GetString("stringTaste"); Lade ich die Taste wieder. Aber da werden nicht die bisher 2 Instanzen berücksichtigt. Man könnte jetzt Array´s erstellen z.b. stringTaste[intButtonID] aber dann hätte ich viele leere Array´s z.b. zweite Instanz würde dann auf stringTaste[1] zugreifen aber stringTaste[0] würde leer bleiben. Bei 10 Instanzen wären dann 9 leer usw. Ich hoffe ihr versteht was ich meine und könnt mir da weiter helfen.
  12. Ok lassen wirs, hab aufgegeben. Hab heut erstes mal Array genutzt, auch wenn ich es schon seid Jahren kenne. Habs auch gleich wieder verworfen, habs nun gaaaanz anders gelöst. Jeder Button bekommt jetzt das gleiche Script. Und Jeder Button bekommt eine ID. Nun kann ich jeden Button eindeutig identifizieren. private IEnumerator IEnumWhile() { intWhile = 0; stringEndText = stringLücke + stringLücke + stringLücke + stringButtonBeschriftung + stringLücke + stringGleichheitszeichen + stringLücke + stringSternchen + stringSternchen + stringSternchen; buttonButton.GetComponentInChildren<Text>().text = stringEndText; while (intWhile < 1) { if (Input.inputString != "") //Läuft wenn eine Taste gedrückt wird { intWhile = 1; stringEndText = stringLücke + stringLücke + stringLücke + stringButtonBeschriftung + stringLücke + stringGleichheitszeichen + stringLücke + Input.inputString; buttonButton.GetComponentInChildren<Text>().text = stringEndText; ButtonFarbeGrundeinstellung(); TasteZuweisen(); translation = Input.GetAxis("Vertical"); /////////////////////////////////////////////////////////////////hmmmmmmmmmmmm } yield return null; // Einen Frame warten } } private void TasteZuweisen() { switch (intButtonID) { case 1: //Input.GetAxis("Vertical") = Input.inputString; /////////////////////////////////////////////////////////////////hmmmmmmmmmmmm break; case 2: Debug.Log(translation); break; } } Und in eine switch werte ich die Button ID aus. Bis hier hin alles gut. Hab also nun die Benutzerdefinierte Taste z.b. K und diese will ich in den Input.GetAxis("Vertical") laden, diese in externer Datei Speichern, damit bei neustart die Zuordnung der Tasten wieder geladen werden.
  13. Achso jetzt weiß ich was du damit meinst. Ich nehme da doch lieber Objekt.name Selbst wenn ich den Namen meines Objektes ändern würde, hat es keinen einfluss auf den Code, da ich den Namen für das Beschriften des Buttons nutze. Sollte ich den Namen ändern, dann sehe ich es am Button ---- Ich dachte der Code ist zum ändern von Komponenten wie ich eigentlich fragte. Habs im Bild nochmal Markiert. Wollte den String Taste in den Button unterm Namen einfügen, das geht vermutlich dann nur doch ändern des Editors zur Entwicklungszeit. Wenn´s geht, wäre das super, ansonsten mach ich das so weiter wie ich es derzeit habe.
  14. Ja. Ist zwar in den meisten Fällen nur Syntax-Zucker, aber das kann ja auch von Vorteil sein. Ist auch gar nicht mal so kompliziert. So als Beispiel: public static class ButtonExtentions { public static void TryChangeText(this Button button, string newText) { var text = button.GetComponentInChildren<Text>(); if (text) { text.text = newText; } } } Dann kannst du myButton.TryChangeText("Hello World"); machen. Lol hab Stunden Lang rumprobiert und gelesen etc... nix hat geklappt. Nun Nochmal probiert und der Code wird nicht mehr Fehlerhaft angezeigt. Aber es passiert auch nix. Ist mir doch zu Hoch. Hab das Script in meines eingebunden und auch in eigenen Script im Editor Ordner gepackt... Standard Button als auch umgeschriebene Buttons zugewiesen etc. Was soll denn passieren?
  15. ahso in <> mach ich doch. Nur auf den Button Name komm ich damit leider nicht. Hm also kann man mit Extension Methode da was machen, was auch immer das ist bzw. man es macht. Vermutlich sehr kompliziert.
×
×
  • Create New...