Jump to content
Unity Insider Forum

Szene öffnet im Build nicht - Bitte um Hilfe


Xurium

Recommended Posts

Hi Leute,

ich arbeite für ein größeres Uni-Projekt an einem Virtuellen Museum, dass später am Desktop-PC oder in VR genutzt werden soll,
um 3D-gescannte Funde/Reliefe etc. zu präsentieren.

Das hat bisher wirklich super funktioniert, aber nun habe ich seit etwa einer Woche einen seltsamen Bug, der meine Arbeit komplett aufhält.

Wenn ich meine Hauptszene (1) mit dem Editor öffne, startet zwar die Szene, aber der Player kann sich nicht bewegen, genau so wenig, wie die Kamera.
Wenn ich dann ESC drücke, um in das PauseMenu zu kommen und dort dann auf Resume klicke, fällt der Player durch die Textur, kann sich im Fallen aber wieder bewegen und drehen.
Erstelle ich einen Build, läuft die Intro-Szene (0) normal ab, die Hauptszene (1) startet dann gar nicht, stattdessen bleibt das Intro eingefroren.

Ich finde keinen Fehler, es werden auch keine Errors in der Console angezeigt.
In der Unity-Facebookgruppe konnte auch niemand einen Fehler finden und zwei haben das Projekt auf ihren PCs gestartet, wo es problemlos lief.
Ich habe das Projekt auf verschiedenen Versionen getestet, auch Unity komplett neu installiert, aber das Problem besteht weiterhin.

Ich bin verzweifelt und brauche dringend eure Hilfe.
Schließlich habe ich ja Deadlines einzuhalten....

Hier der Link zum Projekt:

Liebe Grüße und schonmal vielen Dank,

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich schau es mir mal an, aber wenn bei mir das Problem ebenfalls nicht auftritt wird es schwierig.

Ich würde auf jeden Fall mal alle Logs bei dir lokal durchsehen. Verzeichnisse siehe hier:
https://docs.unity3d.com/Manual/LogFiles.html
(siehe auch Player.log)

Ansonsten hört sich hier bald wie eine "Wunderwaffe" an, aber kannst du auch einmal probieren den Library-Folder deines Projektes zu löschen, dann muss Unity alle Assets neu parsen. Bei mir kam es schon öfters vor das dieser Cache korrupt wurde und dann kamen so Fehler wie ein Shader wird plötzlich nicht mehr geladen etc.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ah das kostet dich mindestens 1 Bier, das war gut versteckt:
5TOVHLA.png

Der Timescale stand auf 0 und damit wurden keine Eingaben von Unity mehr verarbeitet und auch sonst stand die ganze Szene und deshalb fiel auch der Spieler durch den Boden (nur der Physik-Timescale arbeitete noch).
Ich denke das Menu setzt den Timescale auf 0 und irgendwann ist der mal "hängengeblieben", oder jemand hat manuell in den Projekt-Settings herumgespielt . Man sollte also in die Startroutinen noch einbauen, daß der Timescale wieder auf 1 gesetzt wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du bist mein HELD!

Was mich das jetzt an Nerven gekostet hat. Ich wusste gar nicht, dass man die Zeit standardmäßig überhaupt auf 0 setzen kann,
da werde ich auf jeden Fall ein Script für einbauen.

Vielen Dank! Das Bier ist dir Gewiss. Am liebsten persönlich, aber du wohnst vermutlich wieder weit entfernt.
Also falls du irgendwie in der Region Bamberg unterwegs bist, gerne hier, ansonsten Adresse per PN und du kriegst paar Bamberger Biere geschickt ;)
Danke ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

In diesem Skript hier wird an dieser Schraube gedreht und scheinbar fällt der Spieler durch den Boden, wenn der TimeScale vor dem Drücken von Pause (ESC) schon 0 war.
Aber wie der TimeScale in den Projektsettings verstellt werden konnte ohne es "aktiv" zu machen ist seltsam...

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PauseMenu : MonoBehaviour
{
    public static bool GameIsPaused = false;
    public GameObject pauseMenuUI;
    public GameObject Rigidbody;

    // Update is called once per frame
    //Wenn Esc geklickt wird und ich noch nicht in Pause bin, dann Pause, sonst fortsetzen
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (GameIsPaused)
            {
                Resume();
            } else
            {
                Pause();
            }
        }

        Debug.Log(Time.timeScale);
    }

   public void Resume()
    {
        Rigidbody.GetComponent<FirstPersonController>().enabled = true;
        pauseMenuUI.SetActive(false);
        Time.timeScale = 1f;
        Cursor.visible = false;
        GameIsPaused = false;
        
    }

    //Die Steuerung wird deaktiviert, Pause-Ui wird angezeigt, Zeit wird angehalten, Cursor sichtbar und beweglich
    void Pause()
    {
        Rigidbody.GetComponent<FirstPersonController>().enabled = false;
        pauseMenuUI.SetActive(true);
        Time.timeScale = 0f;
        Cursor.visible = true;
        Cursor.lockState = CursorLockMode.Confined;
        GameIsPaused = true;
        
    }

    //Menü-Scene wird geladen

    public void LoadMenu()
    {
        Time.timeScale = 1f;
        SceneManager.LoadScene("Menu");
    }

    //Spiel wird beendet
    public void QuitGame()
    {
        Debug.Log("Quit Game...");
        Application.Quit();
    }
}

Ist durchaus üblich das so zu machen, vielleicht hat ein Entwickler hier den Code getestet und dabei die Projekt-Settings verstellt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du das hier zu dem Script ergänzt, dann würde es auch mit TimeScale 0 in den ProjectSettings funktionieren:

    void Start()
    {
        Time.timeScale = 1f;
    }

*eventuell muss es in der Ladescene dann auch noch in einem Skript gesetzt werden (hier vermutlich auch in der Start-Methode)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...