Dúvida sobre resoluções de tela
Página 1 de 1
Dúvida sobre resoluções de tela
Olá pessoal, ando tendo dificuldade com a mudança de resolução em meus jogos, tenho um script que permite a mudança de resolução e nível de qualidade, o problema é que a imagem do jogo se comporta diferente em diferentes monitores, num monitor HD Ready (resolução máxima 1366x768) a iluminação do jogo fica normal, em alguns monitores FULL HD (resolução máxima 1920X1080) o jogo apresenta brilho exagerado em geral, podendo também haver problemas de iluminação, em monitores 4K (resolução máxima 3840x2160) ocorrem problemas de iluminação mais graves, as sombras praticamente somem. Notei que na resolução nativa do monitor a imagem normalmente fica ok como no caso do HD Ready (resolução máxima 1366x768), porém em minha tv 4K, mesmo na resolução nativa, ainda há problemas de iluminação. Andei pesquisando e tentando usar umas IAs para me ajudar, mas não deu certo, vou deixar o script aqui, se tiverem dicas ficarei grato.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Configuracoes : MonoBehaviour
{
public int nivelQualidadePadrao = 5;
private static Configuracoes instance;
private Resolution nativeResolution;
void Awake()
{
// Implementação do Singleton
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
// Armazena a resolução nativa do sistema ao iniciar o jogo
nativeResolution = Screen.currentResolution;
// Carrega as configurações salvas ou define as configurações padrão
LoadConfiguracoes();
}
else
{
Destroy(gameObject);
}
}
public void Resolution01()
{
SetResolution(1024, 768);
}
public void Resolution02()
{
SetResolution(1366, 768);
}
public void Resolution03()
{
SetResolution(1280, 720);
}
public void Resolution04()
{
SetResolution(1920, 1080);
}
public void Resolution05()
{
SetResolution(2560, 1440);
}
public void Resolution06()
{
SetResolution(3840, 2160);
}
public void Graficos01()
{
SetQualityLevel(0);
}
public void Graficos02()
{
SetQualityLevel(1);
}
public void Graficos03()
{
SetQualityLevel(2);
}
public void Graficos04()
{
SetQualityLevel(3);
}
public void Graficos05()
{
SetQualityLevel(4);
}
public void Graficos06()
{
SetQualityLevel(5);
}
private void SetResolution(int width, int height)
{
// Muda a resolução para tela cheia, sem bordas, e força a mudança da resolução do sistema operacional
Screen.SetResolution(width, height, FullScreenMode.ExclusiveFullScreen);
Debug.Log($"Resolução definida para: {width}x{height} em modo tela cheia exclusiva");
SaveConfiguracoes();
}
private void SetQualityLevel(int level)
{
QualitySettings.SetQualityLevel(level, true);
Debug.Log($"Nível de qualidade definido para: {level}");
SaveConfiguracoes();
}
private void LoadConfiguracoes()
{
if (PlayerPrefs.HasKey("ResolucaoWidth") && PlayerPrefs.HasKey("ResolucaoHeight"))
{
int width = PlayerPrefs.GetInt("ResolucaoWidth");
int height = PlayerPrefs.GetInt("ResolucaoHeight");
Screen.SetResolution(width, height, FullScreenMode.ExclusiveFullScreen);
Debug.Log($"Resolução carregada das preferências: {width}x{height}");
}
else
{
// Aplica a resolução nativa do monitor ao iniciar o jogo
Screen.SetResolution(nativeResolution.width, nativeResolution.height, FullScreenMode.ExclusiveFullScreen);
Debug.Log($"Resolução nativa configurada para: {nativeResolution.width}x{nativeResolution.height}");
SaveConfiguracoes(); // Salva a resolução padrão definida
}
if (PlayerPrefs.HasKey("NivelQualidade"))
{
int qualidade = PlayerPrefs.GetInt("NivelQualidade");
QualitySettings.SetQualityLevel(qualidade, true);
Debug.Log($"Nível de qualidade carregado das preferências: {qualidade}");
}
else
{
QualitySettings.SetQualityLevel(nivelQualidadePadrao, true); // Configuração padrão
Debug.Log($"Nível de qualidade padrão configurado para: {nivelQualidadePadrao}");
}
}
private void SaveConfiguracoes()
{
int width = Screen.width;
int height = Screen.height;
PlayerPrefs.SetInt("ResolucaoWidth", width);
PlayerPrefs.SetInt("ResolucaoHeight", height);
int qualidade = QualitySettings.GetQualityLevel();
PlayerPrefs.SetInt("NivelQualidade", qualidade);
PlayerPrefs.Save();
Debug.Log("Configurações salvas.");
}
void OnApplicationQuit()
{
// Restaura a resolução nativa do sistema ao sair do jogo
Screen.SetResolution(nativeResolution.width, nativeResolution.height, FullScreenMode.FullScreenWindow);
Debug.Log($"Resolução restaurada para: {nativeResolution.width}x{nativeResolution.height}");
}
}
Re: Dúvida sobre resoluções de tela
Aparentemente o problema era causado ao mudar a resolução do sistema operacional, isso causava brilho exagerado no jogo, então mudei o código para alterar apenas a resolução interna do jogo.
Tópicos semelhantes
» Escolher que resoluções jogo vai ter
» [Ajuda]GUI BOX nao se reajusta em resolucoes diferentes
» [RESOLVIDO] Tela (Screen) Android e Joystick adaptável à tela !
» Como criar varias tela na mesma tela
» REMOVER RESOLUÇOES
» [Ajuda]GUI BOX nao se reajusta em resolucoes diferentes
» [RESOLVIDO] Tela (Screen) Android e Joystick adaptável à tela !
» Como criar varias tela na mesma tela
» REMOVER RESOLUÇOES
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos