Jump to content
Unity Insider Forum

Leftwing

Members
  • Content Count

    18
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Leftwing

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hallo! Mal eine eher allgemeine Frage an alle, die mit Unity Spiele/Programme entwickeln UND veröffentlichen (egal, ob "free" oder "kommerziell"). Gibt es Vorkehrungen, die DSGVO zu erfüllen? Unity selbst sammelt ja letztlich Daten und sendet diese an "Unity". Dazu gehört neben der IP (was schon immer auch bei Webseiten als personenbezogen gilt!) sowie die Eindeutige Geräte ID. Was muss hier getan werden, um eben DSGVO-Konform zu sein bzw. hier keinen Ärger zu riskieren? Genügt das Einbinden des "Unity Data Privacy Plug-in", wenn keine ADs platziert werden? Viele Grüße Leftwing
  2. Du könntest nach DroidEdit suchen (hier: https://play.google.com/store/apps/details?id=com.aor.droidedit&hl=de). Dieser Editor unterstützt z.B. C, C#, Java und JavaScript (Syntax Highligting). Aber Spaß macht es keinen, auf einem Smartphone (oder Tablet) Quellcode zu schreiben. Zumal es sich um einen Editor handelt, keine IDE! Leftwing
  3. Ok! Habe es wohl verstanden. Mit den Boardmitteln (DontDestroyOnLoad) lässt sich in der Klasse fast alles sichern - nicht aber Unity spezifische Datentypen wie eben "GameObject". Während eine Liste mit string, int oder float locker gespeichert bleibt, endet der Versuch bei einem GameObject mit "Missing (Game Object)". Komisch finde ich nur: wenn ich statt über Instantiate im Code die Objekte im Unity Editor ins entsprechende Feld ziehe, dann funktioniert es. Viele Grüße Leftwing
  4. Evtl. noch wg. der Vollständigkeit - hier der betreffende GameMaster Code: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class GameManager : MonoBehaviour { private static GameManager instance; public static GameManager Instance { get { return instance; } } void Awake() { if (instance != null && instance != this) { Destroy (this.gameObject); } else { instance = this; DontDestroyOnLoad (this.gameObject); } } public GameObject objekt; public List<GameObject> pooledObjects; void Start () { for (int i = 0; i < 3; i++) { GameObject obj = (GameObject)Instantiate(objekt, new Vector3(i, 0, 0), Quaternion.identity); instance.pooledObjects.Add (obj); } } void Update () { if (Input.GetKey (KeyCode.Escape)) { SceneManager.LoadScene ("startpage"); } } } Die Problemstelle: was in Start() erzeugt wird, ist nach einem Wechsel zur "startpage" und dann zurück nicht mehr da.
  5. Hallo Unity-Community, evtl. habe ich mich hier verrannt und versuche ein Problem zu lösen, welches aber schon von der Idee ein Fehler ist. Geht um einen "GameManager" und das "instantiate" eines Prefabs (im Rahmen von Pooling). Alles, was ich mit "instantiate" angelegt habe, geht nach dem "SceneManager.LoadScene" verloren. :-( In kurz: gibt eine "Startpage"-Szene und eine "Gamepage"-Szene. Die "Startpage"-Szene hat nur einen Button, welcher mit "SceneManager.LoadScene" die "Gamepage"-Szene lädt. Der "Gamepage"-Szene ist das "GameManager" Skript angehängt. In dessen "Update" wird die "ESC" Taste abgefragt. Wird "ESC" gedrückt, wird wieder die "Startpage"-Szene geladen. Zusätzlich werden in "Start" über eine Schleife drei Objekte mit "Instantiate" erzeugt und in einer Liste "pooledObjects" abgelegt. Das eigentliche Objekt wird über den Unity Editor einer Public Variablen bekannt gemacht. Klappt soweit - aber wenn ich aus der "Gamepage"-Szene zurück zur "Startpage"-Szene wechsle, sehe ich mein "GameManager" Objekt - aber die vorhandenen(!) drei Einträge für meine erzeugten Objekte sind leer. Was mache ich falsch? Das beschriebene Projekt soll mir nur helfen, den GameManager zu verstehen. Kein Problem ist es übrigens, wenn ich die Objekte nicht via "Instantiate" erzeuge, sondern die Liste im Unit Editor befülle. Dann bleiben sie auch nach einem Wechsel zur "Startpage" bestehen. Viele Grüße Leftwing
  6. Danke @Tyroonis. Denn genau der Umstand, dass bei der Visual Studio Installation auch "Unity Tools" zu wählen sind, lässt mich eben an eine mögliche "sinnvolle" Reihenfolge denken. Habe ich Unity schon auf der Platte und installiere dann Visual Studio: hängt sich dieses dann mit in den Hub? Oder aber berücksichtigt Unity bei der Installation, wenn ich bereits ein Visual Studio inkl. Unity Tools installiert habe? Vermutlich zu viele sinnlose Gedanken und es macht wirklich keinen Unterschied. Aber ich habe eben weder eine Empfehlung gefunden noch die Aussage, dass es egal ist. :-( Werde wohl zuerst Android Studio, danach Visual Studio (inkl. Unity Tools) und dann Unity installieren. Sofern ich nicht doch noch einen entsprechend anderen Hinweis finde ...
  7. Hallo! Wollte nur in die Runde fragen, ob es eine bestimmte (sinnvolle) Reihenfolge gibt, die bei der Installation der unterschiedlichen Werkzeuge zu beachten ist. Damit denke ich einfach an eine mögliche Integration von einem Tool in das andere. Früher wurde als Beispiel bei Unity (soweit ich weiß) der Edito MonoDevelop nicht installiert, wenn bereits Visual Studio installiert war. Konkret habe ich folgende Installationen vor: - Android Studio 3.4.x (u.a. wg. der Smartphone Emulation) - Visual Studio 2019 (auch wg. dessen Android Emulatoren, sofern es mir gelingt, den MS Debugger zusammen mit Unity zu nutzen) - Unity 2019.1 Viele Grüße Leftwing
  8. Hallo! Auch wenn es bei Dir schon gelöst ist - zu dem Punkt 2 (hatte ich nämlich nach der ersten Hub-Installation auch) hat bei mir folgendes geholfen: im Editor in den Project Settings explizit ".NET 4.x" setzen. Irgendwie war da ".NET 3.5" ausgewählt (nach der Hub-Installation). Später auch den folgenden Hinweis gefunden: https://docs.unity3d.com/Manual/ScriptingRuntimeUpgrade.html Viele Grüße Leftwing
  9. Hallo! Vielleicht kurz zur Erklärung: habe eine 2D-Szene. Eine Plattform (Sprite als langezogenes Rechteck, Kinematic, dient als Begrenzer) und auf der liegen quadratische Blöcke. Diese Blöcke sollen durch Drag&Drop (mittels Maus) beliebig angeordnet/gestapelt werden können. Dazu hängt an jedem Block das folgende Skript: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class Class1: MonoBehaviour { private Vector3 screenPoint; private Vector3 offset; private Rigidbody2D rb; void Awake() { rb = GetComponent<Rigidbody2D>(); } void OnMouseDown() { screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position); offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z)); } void OnMouseDrag() { Vector3 cursorPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z); Vector3 cursorPosition = Camera.main.ScreenToWorldPoint(cursorPoint) + offset; rb.MovePosition(cursorPosition); //transform.position = cursorPosition; } } Alles funktioniert so weit. ABER: wenn mit dem Block (per Drag&Drop) einer der anderen Blöcke getroffen wird, fliegt der getroffene Block aus dem Bild. Würde jetzt eigentlich nur im "Update" die Möglichkeit sehen, hier am rb mit "AddForce" oder "velocity" die Kräfte auf den (getroffenen) Block auf 0 zu setzen. Oder wie könnte ich sonst verhindern, dass die Blöcke federleicht so (massiv) beschleunigt werden?
  10. Hallo Malzbie! Vielen Dank für die Antwort. Ja, kommt wohl wirklich darauf an, was gewollt wird. In meinem Fall sollte das Haus begehbar sein. Hatte eben im SketchUp das erste Stockwerk erstellt (inkl. Treppe) und dann das nächste Stockwerk aufgesetzt. Schon ab da waren Änderungen im ersten Stock "nicht mehr leicht" möglich. Problematisch wurde es aber dann nach dem Import zu Unity, weil ich die Lichtquellen in den einzelnen Räumen nicht einfach (und ganz sicher nicht ideal) habe verteilen können. Evtl. probiere ich das gleiche noch einmal so aus, dass ich mir schon im SketchUp nur "Komponenten" erstelle (1. Stock ohne Decke, 2. Stock ohne Decke usw.) und diese dann unter Unity zum Haus zusammenbaue. Viele Grüße Leftwing
  11. Hallo! Mal eine Anfängerfrage - wobei es mir in erster Linie darum geht, die "best practice" in Erfahrung zu bringen. Thema ist: mit SketchUp (Version: Make 2017) erstelle ich ein einfaches Modell einer Hauses mit zwei Stockwerken. Das Haus wird in SketchUp vollständig erstellt, als DAE oder OBJ exportiert und in Unity importiert. Soweit klappt alles gut und ich kann mit dem Standard-FPS-Controller durch das Haus gehen (Collider beim Modell automatisch erstellen lassen). Meine Frage: wenn ich jetzt "Licht ins Dunkel" bringen will (Light), setzte ich Light-Objekte von Unity ein. Weil das Modell "fertig" gestellt ist, stören die Wände, um die Lichtquellen "einfach" zu positionieren. Ist es jetzt dann üblich, eher nur die Wände zu importieren und das Haus dann unter Unity zusammenzubauen? Dann käme ich mit den Lichtquellen auch besser "in die Räume" und diese zu platzieren. Oder aber ist auch der Weg, das gesamte Haus zu importieren üblich? Sorry für diese Art der Frage, aber ich versuche den besten Weg zu finden. Grüße Leftwing
  12. Ja, Unity lässt sich Offline nutzen. Allerdings musst Du - anders habe ich es nicht hinbekommen - nach der Installation wenigstens einmal Online sein. Wie sieht denn dein Startscreen aus, wenn keine Internet-Verbindung vorliegt? Evtl. liegt es ja auch nur an einer fragwürdig konfigurierten Firewall? Mein Vorschlag wäre ja, die Internetverbindung "echt" zu unterbrechen und Unity zu starten. Dann kannst du hier beschreiben, wie sich Unity verhält bzw. was der Startscreen anzeigt.
  13. @Kojote: Vielen Dank. Insbesondere für den Hinweis bzgl. Vector3 und der globalen Ebene. Mit Transform kann ich jetzt das Objekt beliebig legen. Was ich noch nicht nachvollziehen kann: die Strecke macht über einen Halbkreis eine 180° Wende. Wie bringe ich dem Objekt hier die Drehung bei? @Helishcoffe: Auch Danke! Was bedeutet es nun, Rigidbodys zur Bewegung zu nutzen? Lege ich dann den Rigidbody über das Förderband und bewege dieses - mit den Objekten darauf? Dann müsste ich im Fall des "Kurve" (ein Förderband welches einen Halbkreis nachzeichnet) einzelne Segmente bauen?
  14. Hallo! Bin dabei ein einfaches Förderband zu "simulieren". Dazu habe ich einen Cube erstellt und auf 20 x 1 x 0.1 skaliert. Ein Collider als Trigger wurde um dieses Band gelegt. Das Skript reagiert nun auf "void OnTriggerStay(Collider col)". Mit einem "col.transform.Translate (Vector3.forward * speed * Time.deltaTime);" lasse ich nun alle Objekte "forward" laufen. Folgende Frage: so muss ich immer darauf achten, dass die "forward"-Seite des Objekts richtig liegt. Ansonsten läuft das Objekt nicht am Band entlang, sondern links/rechts vom Band weg oder nach hinten. Weil aber später die Spieler Objekte in beliebiger Orientierung auf das Band legen können sollen, frage ich mich, ob ich dem Objekt nicht die "richtige" Richtung dem Objekt mitgeben kann - statt "forward". Mit "col.transform.position = Vector3.MoveTowards (col.transform.position, endpoint.position, speed * Time.deltaTime);" geht es zu einem definierten Ende-Punkt (in dem Fall "endpoint.position" am Ende des Laufbands). Egal in welcher Orientierung! Aber dann habe ich das Problem, dass das Objekt auf einen Punkt zuläuft und auf dem Band selbst "die Spur wechselt" und eben nicht "gerade" läuft. Wichtiger wird dann auch: wenn ich dann so ein "Laufband" im Halbkreis eine 180° Drehung machen lasse: dann sehe ich nur die Möglichkeit, die Objekte an Hand von "Waypoints" laufen zu lassen. Wüsste nicht, wie ich sonst die 180°-Drehung machen kann bei der sich das Objekt mit "dreht". Evtl. ist die Frage unklar - bitte einfach Bescheid geben, wenn nicht klar ist, wo der Schuh drückt ... Vielen Dank! Leftwing
  15. Hallo! Vielen Dank für Deine Antwort. Ich bin schon froh zu wissen, dass ich nicht der Einzige bin, der hier Unity in einer VM installiert. Wenn Du auch für einen anderen Anwendungsfall. Grundsätzlich funktioniert Unity eben auch in der VM und ich kann damit min. die "einfachen Dinge" (welche ein Anfänger ausprobiert) problemlos durchführen. Bin nur auf den Fall gestoßen, dass z.B. 'Input.GetAxis("Mouse X")' eben immer 0 liefert. Ich glaube, dass das was mit der VM zu tun hat. Kenne ich solche Restriktionen, kann ich damit leben. Zum Zweck: aus meiner Sicht gibt es zahlreiche Vorteile, VMs zu nutzen. Ein einfaches Beispiele wären, dass ich so unterschiedliche Entwicklungsumgebungen auf einer SSD an unterschiedlichen Rechnern via "VMWare Player" nutzen kann. Will das aber nicht näher ausführen. Richtig ist, dass ich zu Hause auf meinem Rechner Unity direkt installiert habe. Weil ich aber z.Z. beruflich viel unterwegs bin, will ich die Zeiten auch nutzen, um mit Unity vertraut zu werden. Ich kann aber aus verschiedenen Gründen nicht beliebig Software auf dem Laptop installieren. Das hat nicht nur was mit der Lizenzpolitik zu tun (Unity nutze ich als Privatperson). Die Firma macht hier auch andere Vorgaben und mir bleibt eben u.a. für Unity nur die Möglichkeit, VMs zu nutzen. Simpler Hintergrund - und ich wollte nur wissen, ob es grundsätzlich weitere technische Restriktionen gibt und mein Vorhaben eben im Grundsatz nicht geht. Performace ist kein Thema! Viele Grüße Leftwing
×
×
  • Create New...