Jump to content
Unity Insider Forum

malzbie

Moderators
  • Content Count

    5,141
  • Joined

  • Last visited

  • Days Won

    360

Everything posted by malzbie

  1. 4 Jahre ist das schon her? Jungejunge... Schön, dass du wieder da bist.
  2. Es geht bei Unity nicht darum ob du mit Unity selbst die 100.000$ Gewinn gemacht hast, sondern ob du überhaupt soviel Gewinn gemacht hast! Also ob du dir (bzw. die Firma sich) eine größere Version leisten kannst oder nicht. Und ja, eine Lizens ist auf eine Person gemünzt. Du kannst schon an mehreren Computern arbeiten, aber immer nur an einem gleichzeitig. Du darfst außerdem auch nicht mischen. Also wenn du eine Plus oder Pro nutzen musst, dann müssen alle Plätze deines Teams genauso ausgestattet sein. Aber natürlich musst du nur so viele Lizenzen haben, wie auch Arbeiter gleichzeitig mit Unity arbeiten sollen.
  3. Hast du vielleicht irgend etwas mit den Layern gemacht? Über die Layermatrix kann man Kollisionen unterbinden. Sonst wüsste ich auch nicht, was da sein könnte.
  4. Sehr schön! Erzähl doch mal was über die Tools, die du für das Separieren der Objekte geschrieben hast.
  5. Feines Video. Das hat bestimmt gedauert. Schön, dass du mal wieder was gemacht hast.
  6. Klar! Du musst einfach nur Unlit-Shader benutzen.
  7. Wenn du immer das gleiche Gebäude nutzt, also 6 Prefabs davon hast, und nur bei 2 Gebäuden geht's nicht, dann tippe ich auf einen externen Collider. Also irgendwas ist in der Szene, was mit den Prefabs nichts zu tun hat.
  8. Also wenn du es es kürzlich gekauft hast, ohne nachzuschauen wann das letzte Update war, dann ist es schon ein wenig deine Schuld. Aber im Store kann sowas immer mal wieder vor kommen. Ich hatte selber mal ein kleines Helferlein für AA gekauft (bevor unity selbst bessere AA Möglichkeiten geboten hatten). Nach einem Update von unity hat das Tool nicht mehr funktioniert und auch ich hatte den Entwickler kontaktiert. Der wollte sich zwar kümmern, aber es ist nie was draus geworden. Klar, ich kann das Tool bis zu einer gewissen Unityversion nutzen, trotzdem ist es ärgerlich. Also wenn du das Asset erst kürzlich erworben hast, dann melde dich bei Unity. Wenn du das Asset schon länger hast, dann wirds nichts werden. Du kannst aber auch die veralteten Codeteile selber korrigieren, falls du die Fehlermeldungen verstehst. Ich gehe davon aus, dass einfach nur gewisse Codeteile durch neuere Varianten ersetzt werden müssen.
  9. Also.... Willst du also für eine Computerspiel-Schmiede Games designen, oder willst du selber Computerspiele erstellen? Wenn es dir darum geht die Spiele selber zu erstellen, dann ist das Studium sicherlich toll, aber es wird nicht reichen. Der Sascha hat es ja gerade sehr gut erklärt. Ob man als "Spieleentwickler" nebenbei Geld verdienen kann? Klar! Aber ein Spiel zu erstellen dauert lange. Und wenn man sowas nebenbei macht, gehen schon einmal ein paar Jahre für ein relativ kleines Game ins Land. Wieviel du dann damit verdienst, kann man nicht abschätzen. Es hängt maßgeblich vom Zeitgeist ab und wie groß die Zielgruppe ist. Und natürlich von der Qualität des Spiels. Wenn du heute ein Spiel anfängst, was dem heutigen Zeitgesit entspricht, kann es zum trotzdem zum Flop werden, wenn das Spiel nach Jahren endlich fertig ist.
  10. Ich werfe jetzt mal was in die Runde, weil es mir irgendwie zu zäh wird. if (InternalNumber >= 1000) { int ganze = Mathf.FloorToInt(InternalNumber/1000); int komma = Mathf.FloorToInt((InternalNumber - (ganze*1000)) / 100); print(ganze + "," + komma + "M"); } Übrigens @Sascha - Hast Recht. ToEven ist Blödsinn. ToZero meinte ich natürlich ^^.Aber da es in Unity eh nicht geht, isses auch egal.
  11. @Sascha Er will genau das, was ich mir oben mit Mathf.Floor schon gedacht habe. Immer abrunden! Gut, ich wusste ja nicht, dass er zusätzlich eine Nachkommastelle angezeigt haben will. Diese Infos kommen immer so nach und nach. @loui1337 Das hier brauchst du: Math.Round(InternalNumber, 1, MidpointRounding.ToEven); Zum Verstehen: Das normale Runden, ist ja so, dass ab 0.5 aufgerundet wird. Um das zu umgehen, muss man der Funktion angeben was passieren soll, wenn die Mitte, also 0.5 erreicht wurde. Und das macht MidpointRounding.ToEven. Fast alle dieser Mathe-Funktionen, ob nun Unityeigen oder eben die von c#, haben extra Argumente, um gewisse Dinge zu steuern. Diese Argumente müssen nicht unbedingt genutzt werden. Wenn du sie nicht nutzt, wirde eben von einem Standard ausgegangen. Solche Dinge werden dir öfters passieren. Du suchst nach einer Funktion, Methode oder Klasse, die dir etwas berechnen oder allgemein helfen soll. Wenn du sie gefunden hast, wirst du sie wahrscheinlich nur so nutzen, wie du es in einem Beispiel gesehen hast. Hauptsache du kommst erst einmal vorran. Schau dir aber trotzdem jedes Mal die Parameter dieser kleinen Helferleins an. Du wirst erkennen, dass da meist ganz viele zusätzliche Dinge drin sind, wie eben diese zusätzliche Parameter die genutzt werden können, aber eben nicht müssen. Und gerade solche zusätzlichen Parameter machen diese Funktionen mächtig und ersparen dir viel Arbeit, wenn du weißt dass sie da sind.
  12. Das was du da in deinem letzten Code gezeigt hast ist ja nicht vollständig. Du rufst in der Update die Methode auf und übergibst dabei einen Wert, der in CookieCount drin sein sollte. Aber welchen Wert hat denn CookieCount? Die Methode an sich funktioniert jedenfalls, wenn du sie so veränderst, wie es Sascha geschrieben hat. Ich habe es eben getestet. Somit hast du entweder ein Problem mit der Variable CookieCount beim Übergeben, oder aber dein Textfeld ist nicht groß genug um alles anzeigen zu können. Mach doch einfach mal ein Debug.Log in die Update mit rein. Debug.Log(NumberAndLetter(CookieCount); Dann kannst du mal die Ausgabe in der Console mit der Ausgabe von deinem Textfeld vergleichen.
  13. Versuch mal dein Ergebnis abzurunden damit du wieder eine gerade Zahl heraus bekommst. https://docs.unity3d.com/ScriptReference/Mathf.Floor.html Und wenn InternalCookies vom Typ Integer wäre kannst du auch gleich das nutzen: https://docs.unity3d.com/ScriptReference/Mathf.FloorToInt.html
  14. Zu 1: Mit der Orthografischen Kamera Größe legst du fest, wie groß deine Sprites in der Kamera zu sehen sind. Also wieviel du vom Spielfeld sehen wirst. Spiel einfach mal mit rum. du wirst es erkennen. Zu 2: Weiß ich nicht was du willst. Zu 3: Die Einstellung besagt, wieviele Pixel in eine Einheit rein passen. Hast du also eine Spritefläche, die 1x1 groß ist, und du hast 64px per unit eingestellt, dann passen da 64 px in der Breite wie auch in der Höhe rein. Stellst du 128px per Unit ein, dann passen da 128 Pixel in eine Einheit rein. Du kannst für jedes Sprite einen anderen Wert einstellen, wenn du es willst. Aber dann hast du natürlich nicht alle Objekte mit der gleichen Auflösung. Du hättest Sprites mit groben Auflösungen und welche mit feineren Auflösungen. Die Grafik des Sprites, muss ja nicht wirklich 64 px breit sein und wird sie auch nicht, es sei denn es ist ne Box, die genau 64x64 groß ist. Genauso, kann ein Sprite auch größer als 64px sein. Aber trotzdem weiß Unity wieviele px pro Einheit rein passen, und somit wird ein schmaleres Sprite auch weiterhin schlamer dargestellt und ein Breiteres auch wirklich breiter. Immer im Bezug auf die wirkliche Anzahl der Sprites zu dem Wert Pixel pro Einheit. Soll dein Spiel konsistent sein, dann nutz für alle Sprites die gleichen Werte.
  15. Wenn du mit Sprites arbeitest solltest du immer Order In Layer vom Spriterenderer mit Zahlen bestücken. Je größer die Zahl, umso weiter vorne ist das Sprite. Egal, ob es näher an der Kamera ist oder nicht. (Oder in deinem Fall genau gleich weit weg) https://docs.unity3d.com/Manual/class-SpriteRenderer.html
  16. Also es ist so: Der Code ansich wird Zeile für Zeile abgearbeitet. Eingabesignale und Ausgaben, z.B. auf den Bildschirm, passieren Frameweise. Welcher Code wann abgearbeitet wird, hängt davon ab, welche Funktion du nutzt. In der Update Funktion wird einmal pro Frame alles von oben nach unten abgearbeitet. In der FixedUpdate wird einmal pro FixerdTime Intervall der gesammte Code abgearbeitet. Genauso ist das in OnTrigger oder OnCollision Funktionen. In jedem Script in deiner Szene können unterschiedliche Funktionen drin stehen. Die Funktionen werden alle nach gewissen Intervallen abgearbeitet. Wenn also der Update Zyklus dran ist, werden alle Update Funktionen in allen aktiven Scripts abgearbeitet. Das passiert aber nicht gleichzeitig sondern ein Script nach dem anderen. Welches Script damit anfängt, wird beim Spielstart zufällig festgelegt. Da kann man aber eingreifen und eine Abarbeitungsreihenfolge einstellen. Wärend eines Frames werden die Scripte also von oben nach unten abgearbeitet. EIn Inputsignal, steht wärend des kompletten Frames an, denn es wird auch nur einmal pro Frame ausgewertet. Somit sollten dein 3 Debugzeilen alle geschrieben werden. Aber der Output wird erst am Ende des Frames gemacht. Also quasi gleichzeitig. Solltest du beim Drücken der Taste H z.B. etwas berechnen wollen, und du hättest da auch 3 Zeilen, die untereinander stehen, dann würden alle 3 Zeilen genauso von oben nach unten abgearbeitet werden. Es geht also immer von oben nach unten. Willst du da dynamisch mal so mal so abarbeiten lassen, musst du dir Bedingungen schaffen. Dann würdest du gewisse Sachen nur dann ausführen, wenn eine bestimmte Bedingung erfüllt ist.
  17. Wenn ein GameObject in der Szene nicht aktiv ist, kann es auch nicht gefunden werden. Mach doch einfach deine panel Variable public und zieh dann das Panel im Inspector auf die nun sichtbare Variable. GameObject.Find brauchst du dann natürlich nicht mehr.
  18. Welchen Wert siehst du denn bei spawnRate im Inspector? Ich gehe davon aus, dass da keine 900 zu sehen ist. Dass es eine Rechteck- Form ist, ist ja klar. Du ermittelst ja die x und y Werte wie bei einem Rechteck. Du holst dir zufällige Werte aus einer definierten Breite und einer definierten Höhe.
  19. Das ist normal! Denk daran, dass dies Public Variablen sind. Also du das erste Mal gespeichert hattest wurde der Wert 1 beim adaptSpeed übergeben. Dies ist jetzt der Public (also der Öffentliche) Wert. Ab jetzt kannst du im Code Werte eintragen wie du willst, sie werden den public Wert nicht mehr überschreiben. Willst du den Wert ändern, dann ändere ihn im Inspector. Bei Private Variablen ist das anders, da ist wirklich nur der Wert im Code entscheidend, denn da gibt es ja nichts was von Außen geändert werden kann.
  20. Hast du in dieser Datei weiter unten auch _content=bytes drin stehen und die alten _content Einträge auskommentiert, so wie ich das oben im Bild gezeigt habe?
  21. Tja, dann musst du mal auf Fehlersuche gehen, denn bei mir funktioniert das tadellos. Als erstes musst du mal deine Bildposition überprüfen. Die Position gibt nämlich die untere linke Ecke des Bildes an. Vielleicht ist dein Bild nicht zu sehen, weil es oben aus dem Blatt herausragt. Dann setz mal ein Debug.Log in das ImageElement script. Und zwar hier: internal imageElement(Texture2D myImage, int newCoordX, int newCoordY) { MemoryStream outStream = null; try { byte[] bytes = myImage.EncodeToPNG(); // das hier ist neu um die Bytes zu bekommen. //Hier drunter Debug.Log("length: "+bytes.Length); //hier drüber outStream = new MemoryStream(); Das Debug.Log im simplePDF wo erstellt drin steht haste noch? Wenn ja, dann solltest du das ja auch sehen. Wenn du als die Szene startest, solltest du diese Dinge in der Console sehen: Wenn die length größer als 0 ist, hat er das Bild schonmal geladen und den bytes übergeben. Ja und "erstellt" sollte auch kommen, denn dann ist er fertig. Du darfst auch keine Fehlermeldung sehen.
  22. Oh ja, hab ich vergessen zu erwähnen. Du musst in dem pdfPersistentPage ganz oben noch using UnityEngine; einfügen. Die Fehlermeldung sagt das ja quasi aus. Die Coroutine newAddImage kommentierst du komplett aus. Die brauchst du nicht.
×
×
  • Create New...