Jump to content
Unity Insider Forum

Standalone Fullscreen


GalleryWhitte

Recommended Posts

Tag auch,

ich bin nun doch ein wenig angenervt, nachdem ich mich nun tatsächlich den dritten Arbeitstag mit diesem Problem rumschlage und einfach keine Lösung finde. 

Vorbemerkungen:
Mir ist schon irgendwie klar, dass die Standalone-Lösungen (für PC, IOS und Linux) ein wenig aus der Mode kommen. (wegen VR, Webplayer, FB usw).
Zudem kenne ich das Problem von früher (ich begann mit 3D Gamestudio) - dass eine Install-exe bei den meisten modernen Virenscannern Probleme verursacht.

Und trotzdem möchte ich meinen Kunden eine downloadbare Version für den HeimComputer anbieten, hier interessiert mich vorallem die Fullscreen-High-Res Möglichkeit, aber leider leider schaffe ich es nicht (mit Unity 2017) einen laufenden Fullscreen (unter Windows) -wieder-zu-beenden.
(Ohne mit Alt+Strg+Entf den Task-Manager aufzurufen und das Fenster/das Spiel abzubrechen,
und das kann ich meinen zukünftigen Kunden ja nicht als Lösung anbieten)

Ich habe nun beispielsweise versucht, einen ESC-Button einzubauen. (Stichwort: Application.Quit)

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Update() {
        if (Input.GetKey("escape"))
            Application.Quit();
        
    }
}

Es passiert nichts.
Es passiert in allen Varianten die ich ausprobiert oder kopiert habe im Fullscreen-Modus einfach nichts. Niente.
Die Application läßt sich nicht beenden.
Höchstwahrscheinlich bin ich einfach zu dumm.


Als nächstes habe ich dieses Asset gekauft: 
  https://www.assetstore.unity3d.com/en/#!/content/33781

Im Fullscreen-Modus läßt sich (bei mir zumindest) weder der Quit-Button nutzen, noch kann man auf einen Windows-Modus umschalten. 
Es passiert ganz einfach nichts. Nada.

Irgendwie denke ich mir, (naiv wie ich eben bin), dass der Export als Standalone und als High-Res-Fullscreen-Game (obwohl ich nicht wirklich an einem 'Spiel' arbeite)
ich denke mir, dass das doch eine Art 'Basis-Funktion' einer Software wie Unity sein sollte, es kann doch nicht sein, dass ich meinen Kunden raten muss, irgendwelche Windows-Tastatur-Kürzel auswendig zu lernen oder gar den Computer abzuschalten, nur um aus dem Fullscreen-Modus wieder heraus zu kommen.

Die Standalone-Tutorials, die ich auf Youtube angeschaut habe, umgehen das Problem einfach, indem sie die Demos nur im 'windowed-mode' starten.

Ich weiß nun grad wirklich nicht (auch weil ForenAntworten aus dem Jahre 2012 stammen usw) ob ich hier grad einfach nur zu blöde bin, das Problem zu begreifen?

Was mir jedenfalls weiterhelfen würde (als Alternative zum Erlernen von C# - wofür ich eigentlich grad einfach überhaupt keine Zeit habe, is halt so, sry)
wäre entweder ein Script um den Fullscreen-Modus mit ESC (oder mit einem Button) zu beenden
ODER
ein Script um vom Fullscreen in den Windows-Modus zu schalten (und wieder zurück),
entweder über einen Menue-Button oder von mir aus über einen Tastatur-Buchstaben-Befehl.
Ich hoffe, das wirkt nun nicht unverschämt.

Entnervte Grüße
A.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Application.Quit muss gehen. Wenn das bei Unity2017 nicht geht, dann haben die da einen Bug verzapft. Da ich noch nicht geuppt habe, kann ich das nicht testen.
Du selber kannst das auch nur testen, wenn du ein Build erzeugt hast. Denn dieser Befehl funktioniert nicht im Editor, da das Game da ja dann keine eigenständige Application ist.

 

mache es mal mit dem KeyCode. Also:
 

if(Input.GetKeyDown(KeyCode.Escape)){
  Application.Quit();
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal eine ganz dumme Frage; hast du dein Script oben auf ein GameObject in der laufenden Scene gezogen?

Du kannst dir einfach mal einen Debug.Log ausgeben lassen, ob der Code überhaupt ausgeführt wird..

 

Ich habe es gerade selbst versucht und für mich functioniert Application.Quit() im Full- oder Nicht-Fullscreen ohne Probleme ( logischerweise nur außerhalb des Editors )

Auch mit dem Wechseln zwischen Windowed und Fullscreen funktioniert bei mir..

 

Hier mal das Script, das ich benutzt habe: 

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

public class Shutdown : MonoBehaviour {

    public KeyCode QuitKey = KeyCode.Escape;
    public KeyCode ToggleFullscreenKey = KeyCode.Tab;

    void Update()
    {
        if (Input.GetKeyDown(QuitKey))
        {
            Debug.Log("Exiting");
            Application.Quit();
        }

        if (Input.GetKeyDown(ToggleFullscreenKey))
        {
            Debug.Log("Toggle Fullscreen");
            Screen.fullScreen = !Screen.fullScreen;
        }

    }
}

 

Zieh es einfach auf irgendein Objekt in deiner Scene und überprüfe, ob im Editor die Logs ausgegeben werden.

Wenn ja, müsste es auch in der Standalone klappen..

 

EDIT:

Zweiter.. ^^

Habs grad auch mit Unity 2017.1 getestet ( aber glaub ich nicht die neuste Version ) und es hat auch geklappt..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hatte soweit ich mich erinnern kann, mal das gleiche Phänomen und da lag es an einem "Fehler" der Unity-Anwendung. Es kann vorkommen, daß ein Plugin nicht entladen werden kann, oder eine Callback-Routine (typisches Beispiel "OnApplicationQuit()") beim Entladen von Unity nicht "ordnungsgemäß" beendet wird. Beides führt dazu, daß Unity im "Exit-State" hängen bleibt. Entweder man behebt diesen Fehler oder man beendet den Unity-Hauptprozeß über die Windows-API (wobei ich letzteres für keinen guten Weg finde, da hier Memoryleaks und ähnliches entstehen könnten). Ich würde einmal ein leeres Projekt builden und obigen Code damit testen, sollte der Exit bei einem leeren Projekt funktionieren , dann liegt die Ursache an den Assets (vor allem mit DLLs) oder an den Skripten des Unityprojektes.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab nun Unity 2017 neu installiert, das Mr 3d - Script eingebaut, und, oh Wunder, sowohl ESC als auch ToggleFullscreen funktionierten.
Thx a lot. (Das irritierende war eben, dass ich auch Foreneinträge (auf englisch) zu dem Problem fand - also dass es an der Installation liegen könnte, darauf wäre ich wohl ewig nicht gekommen...).
Nochmals vielen Dank.
:)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...