Jump to content
Unity Insider Forum

Kojote

Members
  • Posts

    1,471
  • Joined

  • Last visited

  • Days Won

    10

Kojote last won the day on May 13 2021

Kojote had the most liked content!

Recent Profile Visitors

4,448 profile views

Kojote's Achievements

Advanced Member

Advanced Member (3/3)

51

Reputation

  1. Jap hab ich schon. Egal was ich einstelle, selbes Problem.
  2. Hi! Ich hab ein kleines Problem mit Occlusion Culling. So sieht die Scene aus: https://bilderupload.org/bild/9d0020136-occ1 Problem ist nun, wenn meine Camera zu nahe am Boden ist, wird Occlusion Culling aktiv und blendet mir Dinge aus, die noch gerendert werden müssten. https://bilderupload.org/bild/0b2220146-occ2 Ich habe nun schon den Offset der Camera sehr erhöht, aber selbst über 1.5 m über dem Boden macht OCC dies. Hat jemand eine Idee was ich da machen könnte? Grüße Kojote
  3. Hi! Ich hätte mal eine Frage zu Screen.SetResolution. Ich habe ein Settings Script in dem alle Quality Einstellungen zum ersten Spielstart hinterlegt sind. Für die Monitorauflösung nutze ich folgendes: if(settings.videoSettings.screenResolution == 0) { // No resolution is specified, the standard monitor resolution is used. Screen.SetResolution(Screen.width, Screen.height, settings.videoSettings.fullscreen); //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height); } else { // Load saved resolution Resolution[] resolutionsAll = Screen.resolutions; Screen.SetResolution(resolutionsAll[settings.videoSettings.screenResolution].width, resolutionsAll[settings.videoSettings.screenResolution].height, settings.videoSettings.fullscreen); //Debug.LogError("Load saved resolution. Use: " + resolutionsAll[settings.videoSettings.screenResolution].width + " " + resolutionsAll[settings.videoSettings.screenResolution].height); } settings.videoSettings.screenResolution gehört zu deinem DropDown Feld mit den möglichen Monitorauflösungen. Der ausgewählte Wert ist screenResolution. Alle Einstellungen speichere ich in einer Datei. Wenn ich also das Spiel das erste mal starte ist screenResolution immer 0, was auch funktioniert. Er holt sich Screen.with und Screen.height. Auf meinem Monitor wäre das dann 1920 x 1080. Mit der Zeile ändere ich die Monitorauflösung: Screen.SetResolution(resolutions[resolutionSelect.value].width, resolutions[resolutionSelect.value].height, fullscreenToggle.isOn); Jedes mal wenn ich den Settings etwas ändere wird die Datei überschrieben, funktioniert ebenfalls. Wenn ich nun die Datei lösche sollten eigentlich alle Werte gelöscht sein und das Script die Default Werte nutzen. Funktioniert aber nicht! Er löst zwar in den Settings diese Bedingung aus: if(settings.videoSettings.screenResolution == 0) { // No resolution is specified, the standard monitor resolution is used. Screen.SetResolution(Screen.width, Screen.height, settings.videoSettings.fullscreen); //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height); } Problem daran ist, dass die Klasse Screen den letzten Wert speichert. Habe ich also zuletzt mit Screen.SetResolution 800 x 600 angegeben, lösche die Datei und starte das Spiel wieder zum ersten mal, wird nun nicht meine wirkliche Monitorauflösung von 1920 x 1080 genutzt sondern weiterhin 800 x 600. Irgendwie speichert sich Screen.Setresolution den letzten Wert. Ändere ich den Code so ab: if(settings.videoSettings.screenResolution == 0) { // No resolution is specified, the standard monitor resolution is used. Screen.SetResolution(1920, 1080, settings.videoSettings.fullscreen); //Debug.LogError("No specified resolution. Use: " + Screen.width + " " + Screen.height); } Habe ich das Problem nicht, da ich ja mit den festen Werten von 1920 x 1080 arbeite. Ich müsste also irgendwie verhindern, dass Screen sich Werte speichert.
  4. Hi! Ich habe ein Frage zur URP. Ich bin gerade dabei die Settings zu schreiben, aber die Settings werden nicht übernommen. Zum Beispiel der Code: switch((int)shadowsDropdown.value) { case 0: QualitySettings.shadows = ShadowQuality.Disable; break; case 1: QualitySettings.shadows = ShadowQuality.HardOnly; break; case 2: QualitySettings.shadows = ShadowQuality.All; break; } Die Methode wird gestartet, der Switch ist auch aktiv. Case 0, 1 und 2 werden auch ausgeführt, jedoch ändert sich an den Schatteneinstellungen nichts. Hat jemand eine Idee woran das liegt? Ich habe jetzt nichts gefunden das man dies anders schreiben muss, wenn man auf URP umsteigt. Grüße von Kojote
  5. Meine Idee wäre auch einfach Collider. Diese muss man ja nicht so Detailverliebt machen. Es reicht ja wenn sie grob der Form entsprechen. Ob der Spieler mal bis auf 2 cm an die Kante heran kommt oder 11.2 cm merkt keiner.
  6. Fehler gefunden. Problem war das ich einen Unterwassereffekt habe. Dieser ist auch 20 km unterhalb des Terrains wo ich meine Screenshots machte. Ich weis nicht warum, aber trotz den richtigen Layers macht er die Screenshots mit dem Underwassereffekt.
  7. Fast das selbe Problem bei einem simplen Screenshot Script. Der komplette Screenshot ist grau. [SerializeField] private KeyCode screenshotKey = KeyCode.F8; private bool takeScreenshot; private string path; private void Awake() { path = Application.dataPath + "/Screenshots"; if(!Directory.Exists(path)) { Directory.CreateDirectory(path); } } private void Update() { if(Input.GetKeyDown(screenshotKey)) { takeScreenshot = true; } } private void OnEnable() { RenderPipelineManager.endCameraRendering += RenderPiplineManagerEndCameraRendering; } private void OnDisable() { RenderPipelineManager.endCameraRendering -= RenderPiplineManagerEndCameraRendering; } private void RenderPiplineManagerEndCameraRendering(ScriptableRenderContext arg1, Camera cam) { if(takeScreenshot) { takeScreenshot = false; // Zeit abfragen string time = System.DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss"); // Sceeen int width = Screen.width; int height = Screen.height; // Screenshot Texture2D screenshotTexture = new Texture2D(width, height, TextureFormat.RGB24, false); Rect rect = new Rect(0, 0, width, height); screenshotTexture.ReadPixels(rect, 0, 0); screenshotTexture.Apply(); // Save byte[] byteArray = screenshotTexture.EncodeToPNG(); File.WriteAllBytes(path + "/Screenshot_" + time + ".png", byteArray); } } }
  8. Hi! Ich habe ein Script mit dem ich eine zweite Kamera steuere. Diese Kamera macht einem Screenshot von einem Objekt. Der Screenshot wird dann als Textur2D an ein Sprite übergeben wird. Das gesamte Script hat schon in der BuildIn RenderPipline wunderbar funktioniert. Seit dem ich jedoch auf URP umgestiegen bin, funktoniert es nicht mehr. Er macht zwar ein Bild jedoch bekomme ich einen fast schwarzen Hintergrund und das Objekt welches ich ablichten wollte ist komplett schwarz. Man kann also gerade noch so erkennen, dass er überhaupt ein Screenshot erstellt hat. Das wäre der Code: yield return new WaitForSeconds(0.1f); try { RenderTexture rt = new RenderTexture(imageWidth, imageHeight, 0); rt.depth = 24; rt.antiAliasing = 8; avatarCamera.targetTexture = rt; avatarCamera.Render(); RenderTexture.active = rt; Texture2D texture = new Texture2D(imageWidth, imageHeight, TextureFormat.RGB24, true); Rect rect = new Rect(0, 0, imageWidth, imageHeight); texture.ReadPixels(rect, 0, 0); FixColorSpace(texture); texture.filterMode = FilterMode.Point; texture.Apply(); avatarCamera.targetTexture = null; RenderTexture.active = null; Destroy(rt); // Screenshot an Sprite Uebergeben targetImage.sprite = Sprite.Create(texture, new Rect(0, 0, 256, 256), new Vector2(0.5f, 0.5f), 100.0f); // Speichern in Datei byte[] bytes = texture.EncodeToPNG(); string filename = Application.dataPath + "/Screenshots/" + "Image " + imageWidth + " " + imageHeight + " "+ Time.time + ".png"; System.IO.File.WriteAllBytes(filename, bytes); createImage = false; } catch { targetImage.sprite = emptySprite; createImage = false; } avatar.SetActive(false); Hat einer eine Idee wo das Problem ist? Hat sich irgend etwas in URP dermaßen geändert? Grüße von Kojote
  9. Ah Compare ist gut! Laut Goggle kann man das so als Bedingung so schreiben: if(string.Compare("", "", CultureInfo.CurrentCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0) {} Ignoriere Case und Symbole. Die Bedingung ist nicht true oder false sondern 0 und eine andere Zahl. Aber was kann ich erwarten wenn ich beide vergleiche? 0 und 1 oder was kommt dabei heraus? So wie ich es verstanden habe kommt links immer 0 heraus wenn beide strings gleich sind.
  10. Hi! Sagt mal, über Equals kann ich Strings vergleichen. Wie kann ich aber Strings vergleichen und von vorn herein Leerzeichen aussschließen. Fehler wie: "Ich bin ein Text" und "Ich bin ein Text " Würde ich so gern vermeiden. Grüße von Kojote
  11. Hat sich erledigt. Wurde durch einen anderen Fehler ausgelöst.
  12. Hi! Ich habe einen Fehler der mir gerade alles zuspamt: "Game object with animator is inactive" Ich habe ein Parent welches Kindobjekte deaktiviert. Die Kinder an sich sind Vögel und haben ein Steuerscript und eine Animator Komponente. Das Parent legt fest wie viele Kinder per Zufall gespawnt werden. Alle anderen werden deaktiviert. Problem ist nun bei den Kindern diese Fehlermeldung. Egal ob ich nur das Kind deaktiviere oder Kind samt Animator. Fehlermeldung bleibt. Hat einer eine Idee wo das Problem ist? Grüße von Kojote
  13. Funktioniert wunderbar, vielen Dank!
  14. Gibt es aber im Generic nicht mehr oder?
  15. Hi! Mit der letzten und vorletzten neuen Version von Unity 2020 habe ich wunderbare zufällige Fehler bekommen: (0,0): error System.IO.IOException: Sharing violation on path C:\Users\User\Documents\Project\Temp\Assembly-CSharp.dll Es kommen einige Fehler aus dem Temp Ordner, immer mit Sytsem.IO.IOException. Ich muss Unity neustarten, denn sind die Fehler weg. Leider kann ich auch nicht sagen wodurch sie ausgelöst werden, da sie zufällig erscheinen. Hat jemand die selben Probleme oder eine Lösung dafür? Grüße von Kojote
×
×
  • Create New...