Jump to content
Unity Insider Forum

Leaderboard


Popular Content

Showing content with the highest reputation since 12/20/2019 in all areas

  1. 2 points
    Wenn man nur betrachtet, ob der Code am Ende funktioniert, dann ja. Aber Code-Qualität geht weit über "funktioniert" und "funktioniert nicht" hinaus. Code wie dieser ist schlecht wartbar, unmodular, nicht robust und damit eine potentielle Fehlerquelle und Auslöser für unnötige zusätzliche Arbeitsschritte wann immer am Code gearbeitet wird.
  2. 2 points
    Hallo, Ich wünsche euch allen frohe Feiertage und das euch alles vorgenommene im neuen Jahr gelingt. Natürlich auch das ihr gesund bleibt. In diesem sinne Gruß Jog
  3. 1 point
    Das problem ist das du die Objekte nicht in der rechten Ecke verankert hast, sondern höstwahrscheinlich in derlinken oder so. Schau dir mal https://docs.unity3d.com/Manual/UIBasicLayout.html an.
  4. 1 point
    Ist halt ein super-exotischer Anwendungsfall. Probier's halt einfach aus. Über Performance sollte man sich sowieso immer erst dann richtige Sorgen machen, wenn sie zum Problem geworden ist. Sich darüber fertig zu machen, bevor man überhaupt angefangen hat, ist immer schlecht.
  5. 1 point
    @Herbstmond Zunächst einmal würde ich deinem Scriptable Object ein Enum für die Typen hinzufügen. Dann prüfst du im Objekt, was Gebrauch von deinem Datencontainer machen will, von welchem Gentypen es ist. Sollte das Objekt dann also im Awake erfahren haben, von welchem Gentypen es ist, kannst du doch im Start direkt individuelle Logik für jeden Typen dazu schreiben. Alles was das Objekt vom Enum wissen will ist doch, von welchem Typen es ist, um dann seine seine eigene Identität definieren zu können. Hier ein Beispiel für dich: Ich habe es jetzt hier im Beispiel nicht verdeutlicht, aber du solltest auf jeden Fall Gebrauch von Switches machen, wenn du auf diese Art und Weise prüfst. Ich hoffe aber du verstehst, dass das Enum nicht so viele Informationen halten muss. Es genügt, den Grundtypen vorzugeben um dann alles andere davon abzuleiten. Wie @devandart bereits erwähnt hat, könnte ein leeres GameObject eine Liste vom Typen deines Scriptable Objects halten. In dieser Liste speicherst du ganz einfach alle Objekte, die im Spiel existieren. Du kannst es so einrichten, dass sich das Objekt nicht zerstört, wenn du eine neue Szene lädst. Das gibt dir den Vorteil, dass du von überall und zu jedem Zeitpunkt Informationen aus dieser Liste entnehmen kannst, bzw. immer eine Referenz zur Liste findest, da das Objekt in jeder Szene existiert. Grüße, Maurice
  6. 1 point
    Danke das du dir die Mühe gemacht hast !!! klappt genau so wie ich es wollte. Vielen Dank
  7. 1 point
    Das Problem lässt sich relativ leicht lösen. Du musst einfach das TMPro Namespace importieren. Schreib einfach oben bei deinen Namespaces: using TMPro; Dadurch bekommst du Zugriff auf die Klassen vom TextMesh. Darunter auch auf die TextMeshProUGUI-Klasse, die du benötigst. Du deklarierst dann einfach anstelle vom normalen Text ein TextMeshProUGUI Feld. Sollte ohne Probleme funktionieren! Hier nochmal ein Bild 🙂
  8. 1 point
    Okay, das kann ich natürlich nachvollziehen. Da alles so schnell ging und ich innerhalb kürzester Zeit das Problem beheben konnte, dachte ich, dass es womöglich einfach am besten wäre, den Beitrag zu löschen um anderen Leuten nicht den Platz, bzw. die Aufmerksamkeit für Ihre Probleme wegzunehmen. Ich kann das Problem nochmal aufgreifen. Es ging darum, dass ich versucht habe, die Karten in meiner Hand je nach Anzahl flexibel und dynamisch anzupassen. Wenn ich also 2 Karten in der Hand habe, ist Karte 1 an Position Vector(-1, 0, 0) und Karte 2 z.B an Position Vector(0, 0, 0). Sollte nun aber Karte 2 aus meiner Hand verschwinden, möchte ich, dass die andere Karte automatisch ein Stück nach rechts rückt. Und sollte meiner Hand dann wieder eine weitere Karte hinzugefügt werden, möchte ich halt immer wieder die automatische Veränderung der Position erreichen, so dass auch bei einer größeren Anzahl von Karten, alle Karten ihre Positionen anpassen. Da ich diese Logik an iTween knüpfen wollte, musste ich kurz überlegen. Die Lösung dafür hat dann wie folgt ausgesehen. Unter dem Code gehe ich nochmal spezifisch auf den Code ein. public void DrawCardFromDeck() { if (Input.GetKeyDown(KeyCode.Space)) { if (Master_Hand.childCount == 0) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 1) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if(Master_Hand.childCount == 2) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if(Master_Hand.childCount == 3) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(2).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 4) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_Neutral, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(2).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(3).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 5) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_minus1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_Neutral, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(2).gameObject, iTween.Hash("position", Position_1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(3).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(4).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 6) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_minus2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_minus1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(2).gameObject, iTween.Hash("position", Position_Neutral, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(3).gameObject, iTween.Hash("position", Position_1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(4).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(5).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 7) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_minus3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_minus2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(2).gameObject, iTween.Hash("position", Position_minus1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(3).gameObject, iTween.Hash("position", Position_Neutral, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(4).gameObject, iTween.Hash("position", Position_1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(5).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(6).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 8) { Temp = PhotonNetwork.Instantiate("Network_Card_Prefab", Deck_Childs[Deck_Childs.Count - 1].transform.position + new Vector3(0, 1, 0), Quaternion.identity); iTween.MoveTo(Master_Hand.GetChild(0).gameObject, iTween.Hash("position", Position_minus4, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(1).gameObject, iTween.Hash("position", Position_minus3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(2).gameObject, iTween.Hash("position", Position_minus2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(3).gameObject, iTween.Hash("position", Position_minus1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(4).gameObject, iTween.Hash("position", Position_Neutral, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(5).gameObject, iTween.Hash("position", Position_1, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(6).gameObject, iTween.Hash("position", Position_2, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Master_Hand.GetChild(7).gameObject, iTween.Hash("position", Position_3, "time", 1f, "easeType", iTween.EaseType.easeInOutSine)); iTween.MoveTo(Temp, iTween.Hash("position", Position_4, "time", 2f, "easeType", iTween.EaseType.easeInOutSine)); //Vector3 Temp_Position = Master_Hand.position + new Vector3(8, 0, 0); //iTween.MoveTo(Master_Hand.gameObject, iTween.Hash("position", Temp_Position, "time", 1f, "easeType", iTween.EaseType.easeOutSine)); Temp.transform.SetParent(Master_Hand); } else if (Master_Hand.childCount == 9) { return; } } } Ich habe zunächst einmal 9 individuelle Transforms in der Szene positioniert. Dann instantiate ich eine Karte, die sich zur Position des besagten Transforms bewegt. Bevor all das passiert, wird immer geprüft, wie viele Childs aktuell in der Hand sind. Je nachdem, wie das Resultat ausgeht, werden all die Childobjekte im gleichen Zug ein Stück nach links bewegt. Es kommt also eine neue Karte dazu und die anderen wandern im gleichen Atemzug zur nächstgelegenen Position. Ich weiß, dass diese Methode etwas grob ist - aber sie hat für den Moment das erfüllt, was ich bewirken wollte. Demnach kann es ja gar nicht so schlecht gewesen sein. Entschuldige nochmal, dass ich den Beitrag gelöscht habe. Ich hoffe, dass ich nachträglich erklären konnte, was mein Anliegen gewesen ist. Liebe Grüße, Maurice
  9. 1 point
    Das Du die Gene als ScriptableObjects angelegt hast, liest sich erstmal logisch und gut. Nun könntest Du z.B. ein weiteres ScriptableObject erstellen "Gensammlung". Dieses hat dann ein Gen-Array, in welches du all deine Gen-ScriptableObjects ziehst. Und diese Sammlung, bzw. das SO kannst du dann einem GameObject im Inspector zuweisen. //beispiel public class Gensammlung : ScriptableObject { public Gen[]; }
  10. 1 point
    Naja, in deinem Projekt gibt's halt große Dateien. Irghendwo solltest du eine Grenze ziehen, was du alles im Repo haben willst. Code sollte natürlich rein. Bilder und Sounds eher weniger. Da ich bei Gitlab immer noch wesentlich mehr freien Speicherplatz kriege als bei Dropbox und Konsorten, nutze ich mein Hauptrepo für Code, Szenen, Prefabs und ScriptableObjects und mehr oder weniger der Rest kommt in ein Submodul, das ich getrennt hoste. Wenn das irgendwann mal nicht mehr so gut geht (oder eine andere Variante besser wird), dann kann ich das Submodul rausnhemen und habe keinen Müll in der Historie - abgesehen von der Historie der Commit-IDs des Submoduls.
  11. 1 point
    Circle Dash Guten Tag liebe Spieleprogrammierer. Ich habe ein Spiel mit Unity entwickelt was sich Circle Dash nennt. Das Spiel soll ein Mobile Game sein was man momentan auch auf den eigen Browser spielen kann. Ich habe bis jetzt noch nicht viele Spiele entwickelt. Ich wollte es euch einmal zeigen um ein Feedback von euch zu bekommen. Bitte seid ehrlich, denn ich möchte darin besser werden gute Spiele entwickeln zu können. Ich bin offen für neue Vorschläge, Rat und Tipps(Game Art, Spiele Mechanik, Farbe, Aussehen, Sound, Hintergrundmusik, Effekte, Spielgefühl). Ich werde das Spiel noch weiterentwickeln(Neue Updates) und versuchen das Spiel zu verbessern. Ich habe das Spiel alleine entwickelt und bin nur ein Programmierer als kein Game Artist und versuche deswegen mit simplen Grafiken zu arbeiten die ich selber erstelle. Viel Spaß beim Spielen und Grüße an alle. Circle Dash Supporte mich auf Patreon
  12. 1 point
    Herzlich willkommen. 😎
  13. 1 point
  14. 1 point
    Hallo, Herzlich willkommen.🙂 Ich war vorher auch mit 3DGamestudio A4 bis A8 unterwegs. 3DGamestudio ist halt Programmier--intensiver. Bei C# vermisse ich meine heiß geliebten Globalen Variablen von C, auf die man ja von überall zugreifen konnte, die Pointer-Arithmetic allerdings nicht.😉 In diesem sinne viel Erfolg mit Unity Gruß Jog
  15. 1 point
  16. 1 point
    Moin liebe Mitforisten, Beschreibung: Crafting-Survival-Spiel à la "The long Dark" oder "The Forest". Du bist der einzige Überlebende eines tragischen Flugzeugabsturzes und findest dich in einem abgelegenen Wald wieder. Dort tust du alles, um zu überleben ... (Ich weiß, für die Idee würde ich kein Innovationspreis bekommen ). Fokus im Spiel, soll ähnlich wie bei "The long dark", eher auf der Überlebenssimulation und dem Erleben einer realitätsnahen Natur liegen. So soll es später in unterschiedlichen "Biomen", verschiedene Tiere geben, die sich abhängig von Tag oder Nacht unterschiedlich verhalten. Sammeln, Craften, Bauen, Erkunden... Entwicklungsstand: PreAlpha-Phase, Einige Kernfunktionen wie z.B. Inventarsystem, Stats, Crafting und Bauen sind bereits rudimentär vorhanden. Technologie: Unity mit Programmiersprache C#. Erfahrung: Das ist mein erstes Spiel. Unity nutze ich seit 2017. Bei Interesse => Mehr Infos auf: https://lostinthewoods.jimdosite.com/. Bald möchte ich auch eine spielbare Demo zum Download anbieten. Das Spiel soll übrigens kostenlos sein. Bild 1: Inventar und Crafting Table (Sprites der Items müssen noch teilweise ersetzt werden) Bild 2: Baumodus Bild 3: Menü
  17. 1 point
    Anbei ein Video mit den Fluggegner, welche im Weltraum auf einen treffen (für die Planetenoberfläche nutzte ich die oben mit Blender erstellten Modelle). Zu sehen ist hier nun der Hintergrund meines ersten Level. Wieso die Qualität auf YouTube so schlecht ist, weis ich nicht. Edit: ich hatte einfach eine miese Bildqualität eingestellt. Credits: Musik von Eric Matyas http://soundimage.org/ SFX von ZapSplat https://www.zapsplat.com/ Das im Vorschaubild zu sehende Material der Energiebombe stammt vom Asset MK Glass free https://assetstore.unity.com/packages/vfx/shaders/mk-glass-free-100712 Die Schrift Gasalt stammt von Rémi Lagast http://www.1001fonts.com/gasalt-font.html Die Asteroiden habe ich aus dem Unity Shooter Tutorial. Das gesamte restliche Design und die Programmierung sind von mir. Edit: ich habe noch einmal ein Video mit etwas besserer Qualität erstellt.
  18. 1 point
    Aktuell laufen die Doch Splines nach, Mit Wenig Physik, Mal sehen wie ich das anstelle bei weichen. Denke so kann man es sehen lassen
  19. 1 point
    Ich hab einen nicht so kurzen Artikel über Unity's Implementation eines Entity Component System (ECS) Model & Data Oriented Design (DoD) geschrieben. Es ist keinerlei Vorwissen über ECS oder DoD erfoderlich. Der Artikel behandelt die Prinzipien von ECS, DoD, beinhaltet eine eigene kleine Dokumentation über die fundamentalen Konzepte von Unity's ECS und enthält einen kleinen Start Guide, indem ich Stück für Stück zeige wie man ein sehr simples "Spiel" umschreiben kann. Am Ende kommt dann noch ein kleiner, kritischer Kommentar zu Unity. Sowas muss man natürlich nicht am Stück lesen, man kann da durch springen wie man will. Ihr findet den Artikel und das Unity Projekt auf meinem GitHub Account: https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity Ausserdem scheints so, als würde GitHub's PDF Viewer keine Hyperlinks unterstützen, also hab ich die PDF hier noch einmal zusätzlich angehangen. ECS_DoD_Unity.pdf
  20. 1 point
    Moin, wenn du eine aktuelle Unity-Version nutzt kannst du auch kostenlos, wenn du ProBuilder aus dem Package-Manager lädst, grob modellieren (Lohnt sich anzuschauen, aber mit externen Programmen hast du mehr Möglichkeiten). Bestehende Objekte lassen sich auch in Unity mit PolyBrush bearbeiten, müsste ebenfalls in der aktuellen Unity-Version im Package-Manager verfügbar sein (Ist aber wahrscheinlich nicht genau das, wonach du suchst).
  21. 1 point

Announcements

Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×
×
  • Create New...