Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Feature Request Please separate "Run in Background" and "Default Fullscreen" per platform (+ play mode)

Discussion in 'Editor & General Support' started by JasonC_, May 29, 2021.

  1. JasonC_

    JasonC_

    Joined:
    Oct 27, 2019
    Posts:
    66
    Summary

    Currently(-ish: 2020.3.9f1 LTS), the Run in Background and Default Fullscreen settings (Build Settings -> Player -> Resolution and Presentation) are shared between all platforms and the editor itself.

    These options should not be shared. They have different effects on different platforms and are not appropriate as shared general settings (so much so that this almost feels more like a bug than an FR). In addition to per-platform, Run in Background should also be a separate option for the editor's play mode.

    Desired Behavior
    • Make these two options non-shared in the Player Build Settings, and...
    • Either add a Run in Background option to the General tab of the editor Preferences, or make the editor always run in the background and just let the user press pause when desired.

    Rationale

    In the Run in Background case:
    • On some platforms this setting causes problems, while on others it is desired. Workflow consequence:
      • Constant editing of player settings between each platform in a multiple platform build run.
      • Need to communicate that information to team members as well.
      • Many opportunities for errors.
    • Having it be shared with play mode itself does not make sense:
      • If disabled, it interferes with debugging and testing, especially with external tools.
      • If disabled, it interferes with productivity by requiring the Editor to be in the foreground for operations with long wait times.
      • If it must be disabled for the target platform, but you want to avoid development interference, then it must be enabled for the target platform (o_O). It then must be disabled again before a build.
      • In some scenarios, care must be taken to not check the settings change into version control.
      • Philosophically: If it's disabled in the editor, it doesn't represent any reality -- your development machine doesn't generally become inoperable (as it does when you are required to keep the editor window active) when you run your application on a different device.
      • I can not think of a reason why it should be disabled in the editor, ever. Afaict the pause button is equivalent for testing purposes.
    In the Default Fullscreen case:
    • Similar rational as above.
      • Example: For a more immersive application, fullscreen may be required on 2D mobile devices and XR devices, but reasonably undesired in native desktop builds.
      • Example: For a more static application, fullscreen may be required on 2D mobiles devices, desired on opaque XR devices, and undesired on transparent XR devices and native desktop builds.
    • Probably does not need a dedicated editor setting, as afaict it is currently (and appropriately) ignored by the editor.
    Both of those probably have additional rationale when WebGL and various TV / Console systems are considered, which I do not have experience with.

    Note on workarounds: There are more than a few code-based solutions that attempt to bring some amount of sanity to the management of these two settings, ranging from adding toggles to menus to adding custom settings to trying to emulate non-shared behavior. This is a good thing. That said, nearly every platform-specific setting and most of the editor's other functionality could also be replaced with user-provided plugin solutions instead; but that's obviously unsatisfactory UX. The expectation is that the editor, being an IDE, manages all basic platform-specific build settings without requiring additional third-party plugins.