Sintaxa argumentului de linie de comandă „-adapter” pentru playerul independent (Programare, Unity3D, Sintaxă, Argumente În Linia De Comandă, Unity5)

JITRock a intrebat.
a intrebat.

Trebuie să selectez monitorul pe care este afișat jocul meu din linia de comandă pentru sistemele cu două monitoare. Dacă folosesc dialogul Unity Screen Selector Dialog, acesta îmi oferă posibilitatea de a alege monitorul pe care vreau să afișez jocul la pornirea acestuia și funcționează bine. Când încerc să încarc jocul din linia de comandă cu argumentul de linie de comandă: „MyGame -adapter 1” sau „MyGame -adapter 2”, se pare că ignoră argumentul și încarcă jocul pe același monitor de fiecare dată.

Note: Am un sistem cu două monitoare, dar doar o singură placă video (GeForce GT 740).Folosesc Unity 5.6.1f1 (64 de biți) și Window 10.

Vă rog să-mi spuneți ce îmi lipsește.

Comentarii

  • Primul lucru pe care trebuie să-l faceți este să vă asigurați că Unity detectează într-adevăr 2 monitoare, rulând Debug.Log( Display.displays.Length); –  > Por Programator.
  • Debug.Log( Display.displays.Length); din cadrul jocului returnează 1. Dar când lansez jocul în afara Unity, lansatorul implicit al jocului îmi dă posibilitatea de a alege pe ce monitor vreau să ruleze jocul. Pot selecta oricare dintre monitoare din lansatorul de jocuri, iar jocul va rula pe acel monitor. Mi-am creat propriul lansator de jocuri și aș dori să folosesc argumentele din linia de comandă integrate în Unity Standalone Player atunci când apelez la joc din lansatorul meu. –  > Por JITRock.
  • Construiți ca UWP sau Standalone? –  > Por Programator.
  • Standalone și folosesc WPF pentru lansator. –  > Por JITRock.
1 răspunsuri
Programator

Acesta este un bug cunoscut și nu pare a fi rezolvat în acest moment. Site-ul -adapter argument nu funcționează cu niciun Direct3D mai mare de 9.

Mergeți la Fișier –> Setări de construire, , selectați platforma Windows a PC-ului dumneavoastră, apoi mergeți la Alte setări.

De aici, dezactivați Auto Graphics API pentru Windows caseta de selectare.

Veți avea posibilitatea de a alege ce Direct3D să utilizați. Îndepărtați toate celelalte versiuni Direct3D și puneți Direct3D9 acolo. Versiunea a 9-a ar trebui să fie până când Unity va rezolva acest bug.


În cazul în care acest lucru nu funcționează:

Mergeți la File –> Build Settings, , selectați platforma Windows a PC-ului dumneavoastră, apoi mergeți la Rezoluție și prezentare.

Dezactivați „Default Is Full Screen” și „Display Resolution Dialog”.


Din nou, dacă acest lucru nu reușește, utilizați API-ul de afișare pentru a face prin cod. Puteți găsi mai multe informații despre asta aici. Vă sugerez, de asemenea, să depuneți și un raport de eroare.

Comentarii

  • Se pare că voi folosi codul. Celelalte 2 opțiuni nu au funcționat. Voi depune cu siguranță un raport de eroare. Vă mulțumesc foarte mult! –  > Por JITRock.
  • Interesant. Mergeți mai departe și depuneți pentru o cerere de bug. Nu uitați să acceptați atunci când o veți face să funcționeze. –  > Por Programator.
  • De asemenea, nu uitați să îl puneți la prânz cu -multidisplay argument dacă aveți de gând să îl executați din cod. –  > Por Programator.
  • Am avut ceva timp să mă gândesc la acest lucru, iar schimbarea monitoarelor la nivelul scenei nu este modul în care aș dori să fac acest lucru. Faptul că acesta este un bug cunoscut este totuși o informație foarte utilă. Vă rog să mă anunțați dacă știți ceva despre modul în care funcționează lansatorul de jocuri cu jucător independent implicit. Dacă aș ști cum funcționează poate că aș putea face același lucru. Mulțumesc pentru tot ajutorul și pentru cunoștințele suplimentare! –  > Por JITRock.
  • „schimbarea monitoarelor la nivelul scenei nu este modul în care aș dori să fac acest lucru” Este doar o soluție de lucru în acest moment. Dacă depuneți un fișier pentru un bug, ar putea exista o remediere în curând. Cred că se poate programa și permite oamenilor să aleagă monitoarele atunci când jocul este încărcat. De fapt, prefer această metodă, deoarece vă oferă mai mult control. –  > Por Programator.