Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

runner78

Members
  • Content count

    21
  • Joined

  • Last visited

  • Days Won

    2

runner78 last won the day on May 16

runner78 had the most liked content!

Community Reputation

11 Gut

About runner78

  • Rank
    Member

Recent Profile Visitors

436 profile views
  1. Mail-System

    Wenn der Spiel Client die Email versenden soll, ist das nicht unbedingt die beste Idee. Das ginge über SMTP dann müsstest du aber die Zugangsdaten der des Emailaccounts mitgeben, und sowas lässt sich relativ einfach wieder aus einer dll extrahieren. Es wäre theoretisch möglich, dass der Client die Email direkt versendet, aber dann ist es die Gefahr groß, dass die Email von Spamfiltern gestoppt wird. Und wegen einer Verifizierungs Email einen Emailserver einzubinden finde ich dann auch übertrieben. Die beste Möglichkeit wäre eventuell ein PHP Skript auf einem Server, das die Mail versendet, mit dem der Client kommuniziert.
  2. Textur Größe

    Ein Texturatlas kann aber auch ein zweiseitiges Schwert sein. Z.b. wenn aus einem Set von Objekten, die sich eine Textur teilen, nur ein Objekt in einer Szene benutzt wird, und das im schlimmsten Fall mehrfach vorkommt. Man sollte sich genau überlegen, ob ein Atlas auch einen Sinn macht.
  3. Event funktioniert nicht

    var kann man anstelle eines Typen schreiben, aber nur an stellen wo aus dem Kontext heraus ersichtlich ist, was für einem Typ man bekommt. Ob man var benutzt oder den ganzen Type auschreibt ist in den meisten Fällen Geschmacksache, das Produkt nach dem Kompilieren ist das selbe. Bei sehr langen Typen oder wenn man noch gar nicht genau weiß was man zurückbekommt, ist var dann doch sehr hilfreich. Durch das kopieren in eine lokale Variable wird es thread save. Wenn ein anderer Thread genau zu dem Zeitpunkt, wo du shortClick aufrufst auf diese variable schreibend zugreift (in der Regel einen Handler hinzufügt oder entfernt), dann knallts und de erhältst eine Exception.
  4. Event funktioniert nicht

    Und was mir noch aufgefallen ist, du solltest vor dem Aufruf den delagete auf null prüfen, sonst fliegt eine Exception, wenn niemand zuvor das Event abonniert hat. Am besten lagert man es in eine separate Methode aus, hier eine Thread-safe variante: { private void InputHandling(Vector2 inputType) { if (tabClickTime <= holdTime) // defined short touch { RaycastHit hit = new RaycastHit(); Ray ray = Camera.main.ScreenPointToRay(inputType); if (Physics.Raycast(ray, out hit, 100.0f)) { Debug.Log(hit.transform.name); if (hit.transform.name == "Player" || hit.transform.name == "Air_iland_1") { OnShortClick(hit); // Event } } } tabClickTime = 0; } private void OnShortClick(RaycastHit hit) { var handler = shortClick; if(handler != null) { handler(hit); } } }
  5. Event funktioniert nicht

    Zwar off topic, aber die Zeilen: public delegate void UnityEventHandler(RaycastHit hit); public static event UnityEventHandler shortClick; könnte man mit einem Einzeiler austauschen: public static event Action<RaycastHit> shortClick; .NET bietet mit "Action" (delegate ohne Rückgabewert) und "Func" (Delegate mit Rückgabewert) von Haus aus zwei Delegates, die eigentlich so gut wie alle Anwendungsfälle Abdecken. Vor allem dann nützlich, wenn man stark auf functionale Programmierung mit Lambdas setzt.
  6. Identischer Code deutlich langsamer in Unity

    Stimmt so eigentlich gar nicht mehr, beim Rendering werden zum Teil mehrere Kerne benutzt.
  7. Nutzt ihr getters and setters?

    Übrigens gibt es mit dem Mono upgrade in Unity dann auch Kurzschreibweisen bei reinen getter: private float einWert = 0; public float EinWert => einWert; public float AndererWert => Mathf.Pow(2, einWert); Reine readonly getter sind auch möglich, die nur im constructor zuweisbar sind: public int MeinWert { get; } Mit C# 7 gibt es weitere Kurzschreibweisen (Unity upgrade derzeit aber nur C#6) private float einWert = 0; public float EinWert { get => einWert; set => einWert = value } Getter oder Setter-Methoden benutze ich wenn mehr las
  8. Nutzt ihr getters and setters?

    Getter und Setter benutze ich sogar sehr viel. Ich mag z.B überhaupt nicht die bei vielen anderen typische Vorgehensweise in MonoBehavior Felder, die im Inspektor Sichtbar sein sollen, generell public zu machen. Ich mache die in meinen Scripts immer protected, mit dem Attribut SerializetField [SerializeField] protected float size; Damit ist das Feld im Inspector verfügbar und nach außen hin kann ich es wenn, überhaupt nötig, mittels einem Property zur Verfügung stellen. Unity selbst verwendet in ihrem Code zwar auch fast ausschließlich Properties, was mir aber nicht so gefällt ist, dass sie hier von der normalen C# Konvention, Properties in UpperCamelCase zu schreiben abweichen und in lowerCamelCase schreiben. So gibt es dann eine Abweichung zur Schreibweise im .NET Framwork.
  9. Unity 2017 und .NET 4.6

    Habe noch ein wenig experimentiert mit await in den Start und Update Methoden. async void Start() { Mesh mesh = await CreateMeshAsync(); } Sofern in der CreateMeshAsync kein neuer Thread mit Task.Run() erzeugt wird, läuft die Methode asynchron auf dem Mainthread und funktioniert. Ein einfacher Test mit einem Delay in der Update: async void Update () { await Task.Delay(1000); } Beide Beispiel haben eines gemeinsam, was zukünftig gut beachtet werden muss. Durch das await werden die Methoden vom aktuellem Frame entkoppelt, dadurch wird Code nach dem await in einem ganz anderen Frame ausgeführt, als der Code davor. Es auch kann passieren, dass die Awake -> Start -> Update Reihenfolge nicht mehr stimmt, oder der Time.deltaTime Wert passt nicht mehr in den Context, da zwischenzeitlich mehrere Frames übersprungen wurden. So dreht man die Reihenfolge um: async void Awake() { await Task.Delay(5000); Debug.Log("Await"); } async void Start() { await Task.Delay(3000); Debug.Log("Start"); } void Update() { Debug.Log("Update"); }
  10. Singleton auf GameObject - Scene reload

    Eine Version die ich verwende: public class UnitySingleton<T> : MonoBehaviour where T: Component { private static T instance; public static T Instance { get { if (instance == null) { instance = FindObjectOfType<T>(); if (instance == null) { Debug.LogError("There need to been a active " + typeof(T).Name + " script on a GameObject on your Scene"); } } return instance; } } }
  11. Unity 2017 und .NET 4.6

    Seit einigen Wochen gibt es ja schon die Beta von Unity 2017.1 mit experimenteller Unterstützung der .Net Profil 4.6. Hat jemand damit schon mehr Erfahrung gemacht und etwas experimentiert? Ich habe erst gestern die Beta2 das erste mal ausprobiert und freue mich, dass endlich Task und asynk/await in Unity Einzug hält. Hier wäre interessant zu wissen, was mit den neuen Möglichkeiten sich alles besser und einfache Realisieren lässt, oder was man besser sein lässt. Interessant wären zum Beispiel Strukturen wie: void Start() { Mesh mesh = null; Task.Run(async () => { await CreateMeshAsync((m) => { mesh = m; }); gameObject.AddComponent<MeshFilter>().mesh = mesh; }); } Funktioniert leider nicht, da man nicht mehr im Main Thread ist. Laut Forum https://forum.unity3d.com/threads/future-plans-for-the-mono-runtime-upgrade.464327/ gibt es zwar einen synchronization context, aber entweder ist er noch nicht implementiert, ich finde ihn nicht, oder ich habe etwas falsch verstanden.
  12. Welches Problem hat Unity in dem Fall?

    Ein Beispiel wie man so was angeht wäre auch Kerbal Space Programm. Hier werden sämtliche Simulationen (die Orbits der Objekte) mittels Doubles berechnet, und nur für die Darstellung in das lokale Koordinatensystem von Unity umgerechnet. Dabei entfernt sich der Spieler nie weiter als 5000 (genau Zahl weiß ich nicht mehr) vom 0 Punk. Entfernt er sich weiter. wird der Spieler wieder auf Position 0 gesetzt und die Welt um ihm herum "Verschoben". (Dabei kam es in der Alpha oft zu dem bekannt "Kraken" Problem) Wen ein Raumschiff sich einem Planeten näher wird hier getrickst. Das Raumschiff und der Planet befinden sich auf unterschiedlichen Ebenen, Der Planet selbst ist massiv verkleinert, nur ca. 100 units im Durchmesser. Auf der Planeten Ebene befindet sich eine zweite. Kamera, die sich maßstabgetreu den Blickrichtung/Winkel der Hauptkamera entspricht. Diese Bilder werden dann Übereineinader gelegt und es einsteht der Eindruck eines Riesigen Planeten.
  13. Php Post

    www.niXXXXX_.XXXXX.XXXXX.net ist ja eine Domain und keine IP, ich hoffe du hast davor das http:// nicht vergessen.
  14. Php Post

    Die alten mysql Funktionen gelten schon lange depricated und sind in Version 7 rausgeflogen. Man sollte Beispiele besser schon mit aktuelleren Bibliotheken (msqli oder PDO) zeigen
  15. Unity 5

    Es gibt jetzt den ersten Release Canditat von Unity 5, also dauert es wirklich nicht mehr lange.
×