Jump to content
Unity Insider Forum

thewhiteshadow

Members
  • Content count

    86
  • Joined

  • Last visited

  • Days Won

    5

thewhiteshadow last won the day on July 17 2018

thewhiteshadow had the most liked content!

Community Reputation

12 Gut

About thewhiteshadow

  • Rank
    Advanced Member

Recent Profile Visitors

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

  1. thewhiteshadow

    Bewegung eines GameObjects mit Maus

    Erscheint mir wie ein Fall für Physics.BoxCast o.ä. Du testest damit den Weg von der alten zur neuen Position und verschiebst es dann um RaycastHit.distance zu Maus hin. Es findet somit keine Kollision statt.
  2. thewhiteshadow

    Shared Assets

    Du hast nur die Möglichkeit mehrere Assets in Packages zu bündeln. Das gleiche, was du auch über den Asset Store runterladest. Die kannst du aber genau so gut auf deine Platte packen und bei Bedarf in deine Projekte importieren. Einen übergreifenden Ressourcne-Path gibt es nicht. Möglicherweise gibt es im Store auch eine Art Sync-Tool, kann ich aber nicht sagen. mfg TWS
  3. Hallo, ich benötige mal ne weitere Meinung zur Implementierung einer Auswahlmöglichkeit für einen Text Dialog System. Es geht hierbei um eine bedingte Anzeige von Texten nach einer Spieler-Auswahl in einem Dialog und die Darstellung im Inspektor. Das hier ist die Message Klasse für die Einträge. public class Message { public enum Type { NONE, TEXT, QUESTION, EVENT } public Type type; public int option = -1; public int speaker; public int emotion = 0; public string message = ""; public AudioClip voice; public string messageHookID; } Und Hier mal ein Ausschnitt aus dem Editor mit 2 Einträgen. Also es wird eine Frage gestellt. Der Spieler gibt eine Antwort (Option 1, 2 oder 3) und Abhängig davon wird der nachfolgende Eintrag angezeigt oder nicht. Aktuell war die Idee unter dem Typ eine Options-Auswahl anzuzeigen bei der man auswählen kann, bei welcher Antwort der der Eintrag angezeigt wird. Zusätzlich die Option "Alle". Jetzt hat diese Umsetzung den Nachteil, dass man keine verschachtelten Fragen erstellen kann. Oder man setzt unter die Optionsauswahl weitere. Für jede Frage eine. Das wäre aber sehr unpraktisch, da man schon bei wenigen Verschachtelungen komplett die Übersicht verliert. Schöner wäre es, wenn das Fork-Handling bereits in dem Fragen-Element gemacht wird. Aber da fällt mir nur sowas wie Index-Sprungmarken ein, was auch nicht sehr ansehnlich ist. Zumal der Index momentan nicht angezeigt wird. Jemand ne Idee, wie man das einfach und intuitiv umsetzen kann?
  4. thewhiteshadow

    MissingReferenceException bei null check

    Ich hab den Fehler durch ein wenig refactoring behoben, auch wenn ich immer noch nicht genau nachvollziehen kann, warum der Fehler auftritt.
  5. thewhiteshadow

    MissingReferenceException bei null check

    ich dachte eigentlich, das ich das tue 😕 // Avatar ist das Custom-Skript, in der der Code aus meinem vorherigen Post steht. if (avatar != null) { avatar.Speaking = false; avatar.Active = false; }
  6. thewhiteshadow

    MissingReferenceException bei null check

    Ok, das Image ist es nicht, es ist das gameObject. MissingReferenceException: The object of type 'SpriteAvatar' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. TWS.Dialogs.SpriteAvatar.get_image () (at Assets/Scripts/Dialog/SpriteAvatar.cs: 60 ) 55: get { 60: if (gameObject != null && 65: _image == null) 66: _image = GetComponent<Image>(); // Ich hab die leeren Zeilennummern ausgelassen Ich weiß, dass der == und != Operator bei GameObject überladen ist (was das schlechteste API-Desing ist was ich je gesehen hab), aber dass er eine Exception auslösen kann, halte ich für außerst eigenartig.
  7. thewhiteshadow

    MissingReferenceException bei null check

    Danke für die Antwort. Im Editor gibt es keine "Frames" (nur Event getriggerte Updates) und dort funktioniert Destroy alleine nicht. Im Spiel führt DestroyImmediate zu keinen Problemen, auch wenn ich mir schon überlegt habe, ggf. einen Fork einzubauen.
  8. Hallo, ich bin dabei für ein SkriptableObject eine Visualisierung im Editor zu erstellen. Diese erstellt ein Object aus einem Prefab und zeigt es solange an, wie das Asset im ProjektOrdner ausgewählt ist (über einen Custom Inspector). Ändert man etwas im Inspector, soll sich die Visualisierung ändern. Genauer bei dessen UI Image Komponente wird das sprite ausgetasuscht. Wählt man das Asset ab, wird das Visualisierungs-Objekt wieder gelöscht. Bei der ersten Auswahl funktioniert es super. Auch im Spiel klappt es wunderbar. Wenn ich das Asset jedoch im Editor ein zweites mal auswähle (oder ein anderes vom gleichen Typ), spinnt er rum. Es wird eine MissingReferenceException geworfen, wenn ich das image auf null prüfe. private Image image{ get{ if (gameObject != null && _image == null) //<-- Error! _image = GetComponent<Image>(); return _image; } } Ich muss das Objekt für die Visualisierung dynamisch erzeugen, weil es nicht regulärer Bestandteil der Szene ist und im Spiel auch erst zur Laufzeit erzeugt wird. Ich denke, er bekommt das mit dem DestroyImmediate und anschließenden Instantiate nicht auf die Reihe, aber warum wirft er den Fehler bei der null Abfrage?
  9. Hallo, ich möchte in meinem Spiel die Möglichkeit implementieren, dass der Spieler sich an kleinen Wänden hochziehen kann. Ich hab aber noch Probleme damit die nächstgelegene Position der Wand zu ermitteln wo dessen Normal zum Spieler zeigt. Über den Raytrace erhalte ich nur die Position zu der forward-Richtung vom Spieler. Ich benötige aber Erstere für die Animation, damit die Hände später genau an der Kante greifen. Mein Ansatz bisher: Vector3 origin = transform.position + (Vector3.up * 1f); if (Physics.Raycast(origin, transform.rotation * Vector3.forward, out hitInfo, climbCheckDistance)) { (...) // Startpunkt über der Wand für den Down-Trace ermitteln. (50cm hinter der Kante in 2,10 Meter höhe) // Die Höhe ist die Kletterhöhe + 10cm Puffer. origin = transform.position - hitInfo.normal * 1.5f * (Vector3.Dot(origin - hitInfo.point, hitInfo.normal)) + (Vector3.up * 2.1f); (...) if (Physics.Raycast(origin, Vector3.down, out hitInfo, 1f)) { (...) Hiermit bekomme ich zwar schon sehr gut die Position raus. Leider liegt der Punkt tiefer in der Wand, je weiter der Spieler von der Wand weg steht. climbCheckDistance ist zwar klein, aber nicht klein genug, dass man es vernachlässigen könnte. Jemand ne Idee wie das besser geht?
  10. thewhiteshadow

    Funktionen und mehr via Configs Laden und ausführen.

    Das was du womöglich suchst sind ScriptableObject's
  11. thewhiteshadow

    [Gelöst] Raycst vs. onTriggerEnter hit referenz

    So was ähnliches hatte ich auch mal. Das liegt glaub ich an einem Rigidbody an deinem Enemy. Das "sammelt die Collider ein". Da der Raycast über die Physik-Engine läuft, trifft er das Rigidbody mit seinen Collidern. Trigger-Events funktionieren ohne Physik und treffen daher nur den Collider. Lustig ist auch, dass OnCollisionEnter wiederum das Rigidbody treffen würde. Meine Lösung war die Events einfach weiter zu geben.
  12. thewhiteshadow

    Shadowmask ohne Indirect möglich?

    Wüsste nicht, dass das geht. Deaktiviere doch einfach das Terrain bzw. ersetze es zum testen durch eine kleine Plane. Oder du packst das Haus in eine andere Szenen und ladest diese additiv. dann kannst du die Lightmap mitnehmen.
  13. thewhiteshadow

    Gleichmäßiges Particle System?

    Velocity over Lifeime -> Radial
  14. thewhiteshadow

    Richtwert Polygondichte/Texturgröße für mobile Game

    mein Mobile-Game kommt aktuell auf etwa 50000 tris im Screen und läuft bei mir (Honor c5) noch mit 60fps. Aber Shader und Shadow-Caster machen deutlich mehr aus, als die Polygone allein.
  15. Geh auf deinem Baum. Dann auf Edit Tree... auf den kleinen Kreis in der rechten Ecke klicken. Fenster geht auf mit einer Prefab-Liste, davon ist dein Baum ausgewählt. Unten steht der Pfad zum Prefab. Öffne das Prefab im Projekt-Explorer und guck es dir mal an. Evtl. hat es einen Skin-Mesh-Renderer oder sowas. womit die Terrain-Engine nicht umgehen kann. Da ein Bild angezeigt wird, sollte das Objekt ja irgend einen Renderer haben. Und warum hat dein Terrain ein Meshrenderer? Das ist blödsin.
×