Kezdőoldal » Számítástechnika » Programok » Unity3D -ben a teljesen üres,...

Unity3D -ben a teljesen üres, nem renderelt zónákban, beragadó utókép (szemét) marad. Mi lehet a gond a meglévő kódommal?

Figyelt kérdés

A lényeg, hogy van a fő kamera, ami alapból a játék felbontásával renderel teljes képernyőn, de lehetőséget akarok adni a játékosnak, hogy a függőleges pixelszámot csökkenteni tudja igény szerint, így fekete sávok veszik át a képernyő felső és alsó részét. Ezt egyszerűen a pixelRect segítségével oldom meg. Ezzel FPS nyerhető a játékban, cserébe játszató marad a játék natív képélességgel, feltéve, ha a játékost nem zavarja, hogy felül és alul hiányzik egy kisebb/nagyobb sáv, amit amúgy is tud kompenzálni a FOV módosításával. A probléma csupán az, hogy beragadó kép marad a nem renderelt részeken, és az alábbi kódom se segít:


[link]


Itt már a ChatGPT -t is segítségül hívtam, azért ilyen a megoldás amilyen, vagyis azt az ajánlatot kaptam, hogy a LateUpdate() függvényen belül végezzem el az átméretezést, különben nem lesz az üres zónákra hatással a "backgroundColor" és a "clearFlags" átállítása sem. Viszont sehogysem működik, ugyanúgy beragadó képet kapok. Ha nem a LateUpdate -n belül végzem, akkor sem jó, tehát valahol máshol lesz a gond. Ez csak akkor frissül feketére, ha Alt + Tab -ot nyomok, vagy ha játékon belül, teljes képernyőn felbontást módosítok, ami frissíti az egész képet egy pillanatra, de amint kicsinyítem a pixelRect függőleges értékét, vagy megnyitok egy menüt (GUI), az is egyből elkezd beleégni a fekete sávokba.

Hogy lehet egyszerűen rávenni az Unity -t, hogy ahol semmit nem kell renderelni, ott egyszerűen tisztítsa meg fekete színnel a képet?



2023. márc. 14. 14:45
 1/3 anonim ***** válasza:
100%
Mivel az adott területre nem renderel semmit, hiába próbálkozol. Az csak akkor működik amivel próbálkozol, ha nem csökkented a renderelt területet, de akkor fps-t se nyersz. Azt tudod csinálni, hogy egy frame erejéig renderelsz egy fekete képernyőt és utána, a következő frame előtt csökkented a renderelt területet, így a fekete kép marad ott.
2023. márc. 14. 15:10
Hasznos számodra ez a válasz?
 2/3 anonim ***** válasza:

LateUpdate animációhoz van, az után fut hogy a modellek animálva voltak, hogy tudj pl IK-t számolni ha akarsz. Ne egy chatbottól kérj fejlesztési tanácsot...

[link]

2023. márc. 14. 16:49
Hasznos számodra ez a válasz?
 3/3 A kérdező kommentje:

Azt hiszem megvan a legideálisabb megoldás:


Texture2D blackTexture = new Texture2D(1, 1);

blackTexture.SetPixel(0, 0, Color.black);

blackTexture.Apply();


void OnGUI()

{

GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, (float)((Screen.height - MySettings.renderedHeight) / 2)), MySettings.blackTexture);

GUI.DrawTexture(new Rect(0f, (float)(Screen.height - (Screen.height - MySettings.renderedHeight) / 2), (float)Screen.width, (float)((Screen.height - MySettings.renderedHeight) / 2)), MySettings.blackTexture);

...

..

.

}


Nem is értem miért nem jutott eszembe korábban.

2023. márc. 14. 21:39

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!