Jump to content
Unity Insider Forum

HenriChinasky

Members
  • Content Count

    26
  • Joined

  • Last visited

Community Reputation

0 Neutral

About HenriChinasky

  • Rank
    Member

Recent Profile Visitors

473 profile views
  1. Hätte nicht gedacht, dass das ganze scheinbar so kompliziert ist. Denkt ihr ich sollte einen Freelancer beauftragen?
  2. Hi zusammen, ich habe folgenden Shader im AssetStore erworben: https://assetstore.unity.com/packages/vfx/shaders/holo-fx-pack-101298 Ich verwende den Shader jedoch zweckentfremdet zur Darstellung einer Neonlicht-Wandstruktur, die in verschiedenen Farben flackert, was fantastisch funktioniert. Nun möchte ich, dass die vom Shader bunt gefärbten Flächen auch auf einem durch Screen Space Reflections (SSR) spiegelnden Boden sichtbar sind, was standardmäßig nicht der Fall ist. Mir wurde schnell bewusst, dass es daran liegen muss, dass der Effekt transparent ist und daher keine Tiefeninformationen aufweist. So sieht der Beginn des Subshader Bereichs aus: Subshader { //http://docs.unity3d.com/462/Documentation/Manual/SL-SubshaderTags.html // Background : 1000 - 0 - 1499 = Background // Geometry : 2000 - 1500 - 2399 = Geometry // AlphaTest : 2450 - 2400 - 2699 = AlphaTest // Transparent: 3000 - 2700 - 3599 = Transparent // Overlay : 4000 - 3600 - 5000 = Overlay Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } Pass { Blend SrcAlpha OneMinusSrcAlpha Zwrite on ZTest on //cull off CGPROGRAM //http://docs.unity3d.com/Manual/SL-ShaderPrograms.html #pragma vertex vert #pragma fragment frag Ich habe keine Ahnung von Shader Programmierung aber die Idee gehabt folgende Änderungen vorzunehmen. Subshader { //http://docs.unity3d.com/462/Documentation/Manual/SL-SubshaderTags.html // Background : 1000 - 0 - 1499 = Background // Geometry : 2000 - 1500 - 2399 = Geometry // AlphaTest : 2450 - 2400 - 2699 = AlphaTest // Transparent: 3000 - 2700 - 3599 = Transparent // Overlay : 4000 - 3600 - 5000 = Overlay Tags { "Queue" = "Geometry" "IgnoreProjector" = "True" "RenderType" = "Opaque" } <<<<<<<<<<<<<<<<<<<<<< Hier abgeändert auf Opaque und Geometry Pass { Blend SrcAlpha OneMinusSrcAlpha Zwrite on ZTest on //cull off CGPROGRAM //http://docs.unity3d.com/Manual/SL-ShaderPrograms.html #pragma vertex vert #pragma fragment frag Leider hat das keine Änderung gebracht. Jemand eine Idee, wie man dieses Problem angehen könnte?
  3. Eine Anschlussfrage. Das ganze funktioniert wie gesagt wunderbar im Editor. Die Dateien werden auf dem Mac unter Library/Company Name/Application Name gespeichert. Im Build hingegen kann ich keine Dateien irgendwo finden. Jemand eine Idee? Hier der beispielhafte Code: var table_General = CsvHelper.Create("SAVE_General", ""); table_General.Write(0, 0, "Starting Date"); table_General.Write(0, 1, Date_Current.Date.ToString("dd-MM-yyyy")); table_General.Write(2, 0, "Driver Amount"); table_General.Write(2, 1, Drivers_Count.ToString()); string path_General = Application.persistentDataPath + "/SAVE_General.txt"; WriteNewString(path_General, table_General.GetData(CsvTable.LineBreak.CR, char.Parse(";")));
  4. Vielen Dank nochmal, hat wunderbar funktioniert!
  5. Vielen, vielen Dank für diese äußerst aufschlussreiche Anleitung. Eigentlich würde ich die Textdatei am liebsten dynamisch beim Applikationsstart erstellen, da die Anzahl der ID's von der Eingabe des Nutzers abhängt. Jedoch erstelle ich diese Datei (mittels streamwriter) dann besser nicht im Resources Folder, sondern gleich im Application.persistantDataPath Verzeichnis. Wenn ich es richtig verstanden habe, dann war das mein grundsätzlicher Fehler. Probiere ich aus!
  6. Hallo Leute, für eine Scheduling/Routing Software, die ich gerade für ein Unternehmen entwickele, möchte ich eine Art Speicherfunktion des aktuellen Zustands erstellen. Ich würde die Daten gerne als .csv Datei speichern, die in etwa so aussehen soll: Order ID;Status;Datum 001;FULFILLED;20.07.20 ...etc Meine Grundidee war folgende: 1. Textdatei per Streamwriter erstellen, in der alle ID's bereits abgelegt sind und später modifiziert werden sollen hinsichtlich Status und Datum. 2. Die Textdatei bei einer Änderung wieder laden (dadurch funktioniert es auch, wenn das Programm zwischenzeitlich abgeschaltet wurde oder gecrasht ist) und per CSV Reader den aktuellen Zustand importieren. 3. Änderungen vornehmen. 4. Die Datei per Streamwriter mit dem neuen Status der ID's komplett überschreiben. So sieht mein Code für das Erstellen der Save Datei zu Beginn der Initialisierung aus: //CREATE SAVE FILE var table_OrderLog = CsvHelper.Create("SAVE_Fulfillment", ""); int table_currentRow = 0; foreach (OrderObject Order in Order_List) { table_OrderLog.Write(table_currentRow, 0, Order.ID); table_OrderLog.Write(table_currentRow, 1, "PENDING"); table_OrderLog.Write(table_currentRow, 2, "-"); table_currentRow++; } string path = "Assets/Resources/SAVE_Fulfillment.txt"; WriteNewString(path, table_Simulation_OrderLog.GetData(CsvTable.LineBreak.CR, char.Parse(";"))); Anschließend möchte ich die Datei - immer wenn eine Order fulfilled worden ist - aktualisieren. So sieht der Code hierfür aus: void Overwrite_FulfillmentSave(int OrderID, string status, string date) { TextAsset SAVE_Fulfillment_File = Resources.Load<TextAsset>("SAVE_Fulfillment"); var table_old = CsvHelper.Create(SAVE_Fulfillment_File.name, SAVE_Fulfillment_File.text); var table_new = CsvHelper.Create("Log_Fulfillment", ""); for (int i = 0; i < table.RowCount-1; i++) { if (i+1 == OrderID) { table_new.Write(i, 0, (i+1).ToString()); table_new.Write(i, 1, status); table_new.Write(i, 2, date); } else { table_new.Write(i, 0, (i+1).ToString()); table_new.Write(i, 1, table_old.Read(i, 1)); table_new.Write(i, 2, table_old.Read(i, 2)); } } StreamWriter writer = new StreamWriter("Assets/Resources/SAVE_Fulfillment.txt", false); writer.Write(table_new.GetData(CsvTable.LineBreak.CR, char.Parse(";"))); writer.Close(); } Ich iteriere also durch die alte Liste, ändere nur einen Eintrag auf einmal - der in das void als Parameter gemeldet worden ist - und speichere dann die aktualisierte Liste wieder ab. Doch irgendwie funktioniert das nicht so richtig. Zum Beispiel wird die Erstellte Datei erst nach einem Neustart der Applikation überhaupt erkannt. Ich habe auch mehrfach gelesen, dass es gar nicht möglich sei in Runtime eine Datei in dem Resources Ordner zu erstellen - was für mich jedoch problemlos funktioniert. Kann mir vielleicht jemand einen Tipp geben, wir ich so ein System am besten umsetze? Ich könnte das ganze ja in einem externen Ordner (My Documents oder so) speichern, jedoch frage ich mich, wie ich dann testen und debuggen soll. Könnte wirklich einen Denkanstoß gebrauchen. Vielen Dank im Voraus!
  7. Wow, habe die Lösung direkt im Anschluss gefunden. Problem war das Asset "Super Text Mesh". https://issuetracker.unity3d.com/issues/crash-on-addbuildassetinfochecked-when-building-project-with-scene-that-contains-super-text-mesh-component
  8. Hallo Leute, der Unity Editor crasht für mich, wenn ich versuche eine bestimmte Szene zu builden. Hat irgendjemand Erfahrung mit dem error.log und wie man herausfinden kann, was ungefähr ursächlich für das Problem ist? Die Ausdrücke wie "AddBuildAssetInfoChecked" oder "BuildPipeline_CUSTOM_BuildPlayerInternalNoCheck" sind so generell, dass es für mich alles sein könnte. Hier ist der komplette Log. Wenn jemand, der sich damit etwas auskennt, mal drüber schauen würde, wäre ich sehr verbunden. Es muss an irgendeinem Asset liegen, was ich verwende, aber mein letzter Build war blöderweise schon etwas her. Im Notfall muss ich wohl ein Asset nach dem anderen in einer Test-Szene löschen und den Buildvorgang immer wieder starten, aber das wäre sehr zeitaufwendig...
  9. TLDR: Gibt es keine Möglichkeit einfach nur die Shadowmap zu baken und auf die ganzen anderen Beleuchtungstechniken zu verzichten? Hallo Leute, ich habe eine Scene mit einem Terrain und einem relativ großen und komplexen - begehbaren - Gebäude darauf. Es gibt bisher ein Directional Light (Sonne) und 10 Point Lights im Foyer des Gebäudes. So wie es aussieht bin ich damit sehr zufrieden. Nun führen die 10 Point Lights auch im Deferred Mode natürlich zu erheblichen Performance-Einbußen, wenn sie alle Echtzeitschatten berechnen sollen. Auch stört, dass - selbst bei längerer Schattenreichweite - die direktionalen Schatten des Gebäudes in der Entfernung nicht sichtbar sind. Ich vermutete ein leicht zu lösendes Problem: Mixed Lighting für das Directional Light und Baked Lighting für die 10 Point Lights im Foyer. Lighting Mode: Shadowmask. Wie gesagt, ich bin total zufrieden damit, wie es aussieht, ich würde einfach nur gerne die bestehende Shadowmap beim Directional Light in der Entfernung und bei den Point Lights dauerhaft anzeigen lassen. So wie es aussieht jedoch, ist das Baken der Shadowmap alleine gar nicht möglich? Wenn ich mit den folgenden Einstellungen einen Bake durchführe (der locker 6 Stunden dauert), dann sieht plötzlich der gesamte Innenraum super billig aus. Schatten kann ich keine erkennen. Es sieht irgendwie aus, als gäbe es überhaupt keine Lichter. Die Schatten des einen Directional Lights hingegen (Mixed) sind jedoch super. Da ich auf das ganze GI Gedöns erst einmal gerne verzichten würde, so lautet meine Frage: Gibt es wirklich keine Möglichkeit einfach nur die Shadowmap zu baken?
  10. Guten Abend, ich habe mich gerade hier registriert weil ich seit Tagen an einem Problem in Unity sitze, mir langsam Ideen und Geduld ausgehen und eine Fragestellung bei Unity-Answers nichts ergeben hat. Vielleicht klappt es in meiner Muttersprache besser. Vielleicht kann ich ja auch dem einen oder anderen mal weiterhelfen. Nun zu meinem eigentlichen Problem: Ich habe zwei Scripts die für die Problembeschreibung wichtig sind. public void Shoot () { GameObject instantiatedProjectile = Instantiate(Projectile, FirePoint.transform.position, FirePoint.transform.rotation) as GameObject; instantiatedProjectile.GetComponent<Rigidbody>().AddForce (transform.forward * 1000); } Dieses Script befindet sich auf einem Objekt am Ende des Laufs zweier Waffen. Die eine Waffe ist Teil des Rig-Skelettons des Spielers, die andere Teil des Skelettons des Gegners. Beide Modelle werden per Mecanim-Animator animiert. void OnCollisionEnter(Collision collision) { ContactPoint contact = collision.contacts[0]; Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal); Vector3 pos = contact.point; if (collision.gameObject.tag == "Enemy") { // } } if (collision.gameObject.tag == "Concrete") { // } Destroy(gameObject); } Dies ist das Script, dass auf dem Projektil liegt. Das Problem: Wenn ich die Shoot Methode des Spielers aufrufe funktioniert alles wie es soll. Das Projektil spawnt am Ende des Laufs und bewegt sich auf einer Geraden von der Waffe weg. Wenn ich die Shoot Methode des Gegners aufrufe geschehen seltsame Dinge. Die Kugel spawnt etwas rechts-hinter dem eigentlichen Objekt (Wo sie spawnen soll) und bewegt sich in scheinbar zufällige Richtungen. Das eigentliche Objekt hat dabei sowohl die richtige Position als auch Rotation, was man im Editor-Fenster beobachten kann. So weit, so seltsam, doch es wird noch besser. Ich habe genauer beobachten wollen wie sich das Projektil in den ersten Momenten seines Entstehens verhält und habe dafür eine Funktion geschrieben die auf Knopfdruck die Zeit auf 0.5 verlangsamt. Solange die Zeit verlangsamt ist spawnt das Projektil an der korrekten Stelle in die korrekte Richtung. Was ich erfolglos versucht habe: -Das Rigidbody der Kugel auf continuouse dynamic / continuouse zu setzen. -Global Timescale zu verringern (bis auf 0.001). -Den Collider der Kugel zu vergrößern. -Collider zu finden die in der Bahn der Kugel liegen könnten. -Anstatt AddForce - AddRelativeForce benutzen. Ich bin langsam am verzweifeln und würde mich über jeden Ratschlag freuen. Es ärgert mich schon so lange an der gleichen Sache zu sitzen und immer noch so planlos zu sein. Andererseits ist das Schießen des Gegners nun mal essentielle Voraussetzung für einen Top-Down-Shooter... Danke im Voraus für jede Hilfe!
×
×
  • Create New...