Jump to content
Unity Insider Forum

HenriChinasky

Members
  • Content Count

    20
  • Joined

  • Last visited

Community Reputation

0 Neutral

About HenriChinasky

  • Rank
    Member

Recent Profile Visitors

265 profile views
  1. 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
  2. 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...
  3. 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?
  4. Hey, ich denke, das ist die simpelste Möglichkeit für dich. Wenn du ein 3D Modell des Panels in 3DS Max o.Ä. erstellst, dann kannst du deine Textur so skinnen, dass der jeweilige Teil des Bildes über der jeweiligen Stelle des Panels sitzt. Wenn du jedoch in Unity einzelne Planes erstellst, so brauchst du für jedes Plane das etwas anderes zeigen soll ein einzelnes Material. Solange du nicht tausende Knöpfe gleichzeitig auf diese Weise anzeigst, sollte das die Performance nicht beeinträchtigen!
  5. Wow, danke euch beiden! Einfach nur genial! Der GetRealAngle-Code ist ja aber auch mal super praktisch... Verrückt, dass in dem Unity Forum Mega Thread da keiner drauf gekommen ist.
  6. Stimmt schon, aber ich wollte eigentlich nur eine Kamera haben die sich von links nach rechts und zurück dreht
  7. Den Thread hab ich auch gefunden... Super verwirrend. Dachte halt, dass es vielleicht doch eine etwas einfachere Lösung geben muss... Werde mal ein bisschen weiter rumprobieren und meine Lösung auf jeden Fall hier posten. Wird schon irgendwie lösbar sein.
  8. Hmm, wüsste nicht wie es ohne while Scheife gehen sollte? Bin grad etwas verwirrt. Was spricht denn gegen die Methode? Meinst du in der Update Funktion? Aber da kann ich ja keine Wartepunkte setzen (waitforsecond), oder irre ich mich? Und was genau meinst du denn mit clampen?
  9. Danke für die Antworten, obwohl ich noch nicht ganz verstanden habe wie ich die System.Reflection anwenden würde. Der Tipp, den Inspector Wert als 360 - Wert selbst umzurechnen würde mich wiederum - selbst wenn es technisch geht - vor ein anderes Problem stellen. Das ist mein simpler Code: while(isRotating) { while(transform.localEulerAngles.y < maxY) { transform.localEulerAngles = new Vector3(initialEulerX, transform.localEulerAngles.y + 0.3f, initialEulerZ); yield return new WaitForSeconds(0.02f); } yield return new WaitForSeconds(3.0f); while (transform.localEulerAngles.y > minY) { transform.localEulerAngles = new Vector3(initialEulerX, transform.localEulerAngles.y - 0.3f, initialEulerZ); yield return new WaitForSeconds(0.02f); } yield return new WaitForSeconds(3.0f); } Das "while (transform.localEulerAngles.y > minY)" wäre ja dann Blödsinn, wenn ich zum Beispiel bei y = 0 starte, dann auf maxY = 60 drehe und dann zurückdrehen will auf -60, also 300. Dann ist der Wert ja schon zu Beginn des zweiten Zyklus geringer als der Endwert... Hmm...
  10. Hallo Leute, ich stehe wieder vor einem Problem und hoffe ihr habt einen Tipp für mich. Was ich machen möchte klingt erst einmal sehr einfach. Ich möchte ein "Überwachungskamera"-Prefab erstellen, was von Level Designern in der Scene platziert werden kann. Die Kamera soll sich von und bis zu einem bestimmten Winkel drehen - das ganze pingpong artig hin und her - so wie aus zahlreichen Spielen bekannt. Ich dachte, dass die einfachste Lösung wäre, dass der Designer einen minimal und einen maximal Y-Winkel angibt, den er anhand der Werte oben rechts im Transform Inspektor ermittelt. Nun ist mir klar geworden, dass diese Werte getweakt sind um die Quaternion Werte leichter lesbar zu machen. Das führt dazu, dass transform.localEulerAngles.y wohl nicht den Wert angibt, den der Designer im Editor ablesen kann. Wie geht ihr mit dieser Schwierigkeit um? Gibt es wirklich keine Möglichkeit auf den Wert im Inspector zuzugreifen?
  11. Danke für die Antwort! Du meinst also am sinnvollsten wäre es eine statische Liste zu erstellen, in welche sich die besiegten Gegner bei ihrem Tod eintragen. Beim Laden der Scene überprüfe ich für jeden Gegner, ob er in der Liste vorhanden ist und kann so erkennen, ob er zerstört werden soll. Klingt an sich sehr vernünftig, aber was, wenn ich dann beim Speichern des Spielstands doch einmal bestimmte Veränderungen an der Spielwelt beibehalten möchte? Wäre dann wohl eines der Assets wie EasySave eine Lösung, mit denen ich eben jene Listen serialisiert speichern könnte, oder? Hätte ich eigentlich auch selbst drauf kommen können...
  12. Hallo Leute, ich bin gerade dabei ein System für unser Projekt zu entwickeln mit dem bestimmte Daten szenenübergreifend gesichert werden können. Am besten ich erkläre es anhand eines Beispiels: Der Spieler kann sich durch eine Scene bewegen in der es Gegner gibt. Der Spieler tötet einen Gegner. Im Anschluss betritt der Spieler ein Haus in der Scene, welches wiederum eine eigene Scene darstellt. Aus Speichergründen wird hierfür nicht die additive Lademethode verwendet, also die ursprüngliche Szene mit der Information, dass der Gegner getötet worden ist verschwindet. Wenn der Spieler dann wieder aus dem Haus hinaus geht, soll der Gegner jedoch natürlich weiterhin tot sein. Meine Lösung bisher war es jeden Gegner selbsttätig eine ID zuzuweisen zu lassen. Sobald der Gegner stirbt "registriert" er sich mit seiner ID in einem Script und gibt dort an getötet worden zu sein. Seine ID wird daraufhin mit dem Befehl PlayerPrefs.SetInt(ID, 1) als tot gespeichert. Sobald eine Scene geladen wird überprüft das Script ob die ID eines in der Scene vorhandenen Gegners bereits in den PlayerPrefs gespeichert und als tot registriert wurde. Funktioniert erst einmal wie geplant. Das Problem stellt sich insofern, als dass mir diese Methode sehr unübersichtlich vorkommt und im späteren Verlauf Probleme machen könnte. Zunächst muss ich jetzt schon bei jedem Spielstart die PlayerPrefs komplett löschen, da ich ja nicht sagen kann: Lösche nur alle Informationen zu toten Gegnern und behalte diese, welche sich beispielsweise auf Grafikeinstellungen beziehen. Daher lautet meine Frage: Gibt es eine einfachere Möglichkeit oder ein Asset, welches ihr empfehlen könnt, dass es mir ermöglich exakt dasselbe zu tun wie mit den PlayerPrefs, nur dass ich vielleicht mehrere solcher Dateien erstellen kann, also eine Datei nur für Dinge die bei jedem Spielstart zurückgesetzt werden und zusätzlich eine die andere Einstellungen und den Spielstand speichert? Wie löst ihr solche Datensicherungen zwischen Scenes? Ich könnte natürlich ein zwischen den Scenes persistentes Script erstellen, dass die getöteten Gegner in einer Liste speichert, aber dann wäre ich wieder Limitert, was das Beenden und Speichern des Spiels angeht. Von Seiten der Engine kann PlayerPrefs ja wohl kaum für diese Aufgabe gedacht sein, oder? Danke für Antworten und Anregungen, Daniel
  13. Okay, vielen dank für eure Hilfe. Ich habe das Asset DevTools was sowieso deprecated ist gelöscht. Darin war eine .dll mit der Änderungen an dem Editor vorgenommen worden waren. Irgendwie ist der Ordner von meinem alten in mein neues Projekt gerutscht. Ich traue mich noch nicht weitere Assets zu importieren aber da das Asset Unity 2017 sicherlich nicht unterstützt könnte ich mir sehr gut vorstellen, dass es daran gelegen hat. Vielen Dank nochmal, das Schreiben mit euch hat mich jedenfalls vorerst zur richtigen Lösung geführt!
  14. Jap, du hast wohl leider Recht... Was mich nur so verwundert ist, dass es nach dem Löschen eines Assets geklappt hatte ein Editor Script zu importieren oder nachdem ich Fraps geschlossen hatte einmal. Schon sehr seltsam der ganze Fehler. Also ich weiß wirklich nicht was ich noch machen soll... Das einzige was mir noch einfällt um das Problem einzugrenzen ist zu Posten was konkret im Editor Log zwischen den TypeLoadExceptions und dem Crash steht: Refreshing native plugins compatible for Editor in 3.64 ms, found 7 plugins. Preloading 2 native plugins for Editor in 0.28 ms. Platform assembly: C:\Unity2017\Editor\Data\Managed\Mono.Cecil.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.SerializationLogic.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.DataContract.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\UnityScript.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.Legacy.NRefactory.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\System.Xml.Linq.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Managed\Unity.IvyParser.dll (this message is harmless) Platform assembly: C:\Unity2017\Editor\Data\Mono\lib\mono\2.0\Boo.Lang.dll (this message is harmless) Non platform assembly: C:\Unity2017\Editor\Data\UnityExtensions\Unity\UnityVR\Editor\UnityEditor.iOS.Extensions.Xcode.dll (this message is harmless) Non platform assembly: C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity\15.0\Editor\SyntaxTree.VisualStudio.Unity.Messaging.dll (this message is harmless) Assertion failed on expression: 'm_ArrayField != SCRIPTING_NULL' (Filename: C:\buildslave\unity\build\Runtime/Mono/SerializationBackend_DirectMemoryAccess/LinearCollectionField.cpp Line: 33) Crash!!! Könnte man daraus nicht schließen, dass es sich vllt um eine .dll Datei handelt, so wie letztes mal? Dann wär die Suche ja zumindest extrem eingegrenzt. "Refreshing native plugins compatible for Editor" würde auch erklären warum nur Editor Scripts betroffen sind, weil bei denen die .dlls neu geladen werden?
×
×
  • Create New...