SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Jogo Em Desenvolvimento Patrulha Ostensiva (Android & Pc) (C#) (Unity)
Como Entrar no Carro (RCC)
Dúvida sobre Prefab's e Sistema de fazer o próprio personagem
Geração de Mundo
[_____CRONOGRAMA DO CANAL_____]
Dúvidas sobre reutilização de Scripts
Como faço balanço na arma
uso do .normalized
Problema com sistema de tiro do Marcos;-;
BOLT - Animação do Personagem ao Empurrar Portão
Problema com Downloads na asset store
Unity 2D - Sprite Embaçado
Dúvida com um script de animação
Erro no Script de pulo dublo
AJUDA POR FAVOR (ERRO DE CACHE)
anúncios não estão sendo reproduzidos
como fazer um galaxy shooter 2d na unity
Problemas com Object.Instantiate
Problema com o Unreal Engine
ERRO Em Scipts
Que programa e recomendado pra criar jogo 2D?
Firebase na Unity
Como modificar variáveis de outras classes?
Otimização da Unity
Como ATUALIZAR o jogo sem precisar ficar compilando toda hora? -
Canal para vídeos de Unreal Engine e Desenvolvimento
ERRO Em Scipts
Como Ativar e Desativar Emissao do Material Por C#
Nobody's Land: Aftermaths - First Official Trailer
publiquei meu primeiro jogo na gamejolt e na play store
C# .net Core -> Adicionar dados de outra tabela
[TUTORIAL] Script de arma automatica
[TUTORIAL] Acessar variáveis de outros scripts, variáveis estáticas (javaScript)
[RESOLVIDO]Ativar o Character controle faz o boneco ignorar gravidade
SOM Duplicado unity3d
Problemas com a posição usando Setparent
Dar dano no inimigo ao clicar nele
A procura de um MODELADOR pra desenvolver jogo pra estudo.
Tempo
Cutscene
pq o game launcher da samsung n reconhece o meu jogo?
Jogo Project Lazarus parte 2
[TUTORIAL] mover personagem na direção da camera
como fazer um gameobject selecionar no código ao colidir com o mesmo
Como Fazer esse Giroflex (Link Video)
Quando uma Boolean ativar as outras duas nao podem ficar on.....
[ASSET] Personagem v0.5
Como Fazer Carreta Unity Ultilizando o RCC
Problema com um jogo de tiro em 1D
Jogador não Subi na Plataforma
ola estou tentando colocar meu scrip so que ele da erro n sei pq ajuda
Como colocar uma mira no lugar do cursor do mouse
Unity 2018 - Ajuda com OnTriggerEnter e OnTriggerExit
meu script de Basic Runtime Occlusion Culling nao esta funcionando
[TUTORIAL] vibrar o dispositivo ao colidir com um objeto
como fazer para video rodar após cena inicial?
Como faço pro personagem correr na direção da câmera para Android
Pontuação e Click
Como tocar efeito sonoro apenas depois no momento que carrega a cena?
Pontuação em barra
Como deixar a barra de vida fixa??
Elevador
Botões UI
Unable to merge Android manifests
Android SDK Build-tools component is not found (Por Favor Me Ajudem)
Sistema de Ranking com Leaderboard facebook na Unity
Spawnar Objetos aleatorios em lugares pre-definidos
Movimentação em primeira pessoa
Salvar a cada vez que pego um moeda binary formatter
Como fazer a câmera balançar de acordo com a suspensão do veículo?
Sistema de Escolha de Player no Multiplayer
Estou com problema com um script que está dando erro.
IA do jogo Pong
Bons exemplos brasileiros de inimigos em jogos de terror
mover objeto ao encostar em um trigger
[RESOLVIDO] Unity 2019.4.9f1 - Erro ao criar o APK
Plataforma Flutuante
Como passar o canvas com components de uma cena pra outra?
Problema com TERRAIN
[PROBLEMA] Unity 2018 - Nenhum script Monobehaviour no arquivo
wallrun em 1° pessoa e com rigidbody
Dúvida relacionada a comportamento de objetos
Aumentar e diminuir velocidade de uma animação
Caracteres estão sumindo em Text UI somente na Build WebGL
como fazer um chat simples no photon
Erro na exportação
Alguém tem script de movimentação 3D?
Não consigo desativar script de gameObject (C#)
Unity 2018.2 -Ajuda com sistema de SpawnPoint e respawn com Photon Bolt
Recarregar cena usando botão UI
Controler de player 2D
Combate corpo a corpo 2D
Tela de shop/market na unity
Dúvida sobre textura
Problemas para rotacionar objeto filho
Como Resolver ?? Android SDK Build-tools component is not found.....
Update APK - Arquivo de expansão [New Google Console]
Alguém mais tem tido problemas com Layermask [v2019.4.17]
error ao buildar para windows utilizando il2cpp [il2cpp.exe did not run !]
Hoje à(s) 10:39 pm
Hoje à(s) 10:25 pm
Hoje à(s) 9:43 pm
Hoje à(s) 9:15 pm
Hoje à(s) 6:53 pm
Hoje à(s) 5:59 pm
Hoje à(s) 2:19 am
Ontem à(s) 11:18 pm
Ontem à(s) 11:00 pm
Ontem à(s) 6:48 pm
Ontem à(s) 6:19 pm
Ontem à(s) 4:47 pm
Ontem à(s) 4:38 pm
Ontem à(s) 3:47 pm
Ontem à(s) 12:01 pm
Ontem à(s) 11:01 am
Dom Fev 28, 2021 6:36 pm
Sab Fev 27, 2021 11:08 pm
Sab Fev 27, 2021 9:18 pm
Sab Fev 27, 2021 6:07 pm
Sab Fev 27, 2021 2:47 pm
Sab Fev 27, 2021 12:27 pm
Sab Fev 27, 2021 12:08 pm
Sab Fev 27, 2021 3:17 am
Sab Fev 27, 2021 3:13 am
Sab Fev 27, 2021 3:05 am
Sex Fev 26, 2021 10:42 pm
Sex Fev 26, 2021 9:30 pm
Sex Fev 26, 2021 8:59 pm
Sex Fev 26, 2021 7:51 pm
Sex Fev 26, 2021 6:19 pm
Sex Fev 26, 2021 11:27 am
Sex Fev 26, 2021 6:01 am
Sex Fev 26, 2021 1:04 am
Qui Fev 25, 2021 11:28 pm
Qui Fev 25, 2021 7:59 pm
Qui Fev 25, 2021 3:31 pm
Qui Fev 25, 2021 1:54 pm
Qui Fev 25, 2021 10:30 am
Qui Fev 25, 2021 10:24 am
Qua Fev 24, 2021 6:32 pm
Qua Fev 24, 2021 7:45 am
Ter Fev 23, 2021 12:32 pm
Seg Fev 22, 2021 8:30 pm
Dom Fev 21, 2021 1:01 pm
Dom Fev 21, 2021 12:00 pm
Sab Fev 20, 2021 9:54 pm
Sab Fev 20, 2021 1:57 pm
Sab Fev 20, 2021 12:19 pm
Sab Fev 20, 2021 12:11 pm
Sab Fev 20, 2021 12:05 pm
Sex Fev 19, 2021 8:49 pm
Sex Fev 19, 2021 5:03 pm
Sex Fev 19, 2021 4:56 pm
Sex Fev 19, 2021 1:02 pm
Sex Fev 19, 2021 11:34 am
Sex Fev 19, 2021 10:04 am
Qui Fev 18, 2021 9:21 pm
Qui Fev 18, 2021 7:45 pm
Qui Fev 18, 2021 10:37 am
Qua Fev 17, 2021 7:25 pm
Qua Fev 17, 2021 3:55 pm
Qua Fev 17, 2021 12:56 pm
Qua Fev 17, 2021 12:10 pm
Qua Fev 17, 2021 10:02 am
Ter Fev 16, 2021 1:13 pm
Ter Fev 16, 2021 12:55 pm
Ter Fev 16, 2021 11:29 am
Ter Fev 16, 2021 1:43 am
Ter Fev 16, 2021 12:11 am
Seg Fev 15, 2021 6:56 pm
Seg Fev 15, 2021 3:26 pm
Seg Fev 15, 2021 2:13 pm
Seg Fev 15, 2021 12:45 pm
Seg Fev 15, 2021 10:31 am
Seg Fev 15, 2021 12:44 am
Dom Fev 14, 2021 1:13 pm
Dom Fev 14, 2021 9:26 am
Sab Fev 13, 2021 4:31 pm
Sab Fev 13, 2021 1:39 pm
Sab Fev 13, 2021 10:07 am
Sab Fev 13, 2021 9:25 am
Sab Fev 13, 2021 12:02 am
Sex Fev 12, 2021 8:06 pm
Qui Fev 11, 2021 1:34 am
Qua Fev 10, 2021 9:12 pm
Ter Fev 09, 2021 9:36 pm
Ter Fev 09, 2021 12:01 am
Seg Fev 08, 2021 7:26 pm
Seg Fev 08, 2021 2:55 pm
Seg Fev 08, 2021 12:25 pm
Seg Fev 08, 2021 11:43 am
Sex Fev 05, 2021 11:26 pm
Sex Fev 05, 2021 5:01 pm
Sex Fev 05, 2021 2:37 pm
Sex Fev 05, 2021 1:11 pm
Sex Fev 05, 2021 12:45 pm
Sex Fev 05, 2021 11:23 am
Sex Fev 05, 2021 10:45 am
EricknhYT
EricknhYT
TIKO
gilvania
Sidney1
Sidney1
Charlesoff
NKKF
Charlesoff
Triskal
Charlesoff
luansantos
Charlesoff
DNX BRAZIL 1
verme1311
JulioWinchester
LUCASkkk
Pokedlg
DNX BRAZIL 1
SauloeArthur
Alex Jun
tanottauro
darkrj
Alex Jun
Alex Jun
Alex Jun
Fagner
EricknhYT
JohnRambo
dutrabr100
KurotamaXIII
TODDY979
Danilo
Minijump
Fagner
darknecron
darkrj
Cristhofer Marques
Maria Elisa
JulioWinchester
Fagner
Patrick
SauloeArthur
rodrigovitao
JulioWinchester
EricknhYT
FelipeSouza11
EricknhYT
tautologias345
NKKF
NKKF
NKKF
ProBrStalker
LlucasBRDev
NKKF
ComicSans
SauloeArthur
Fagner
rafaelPortugal
SauloeArthur
Konoiaro
MiguelAon
Charlesoff
Callyde Jr
EricknhYT
Franttyck
FelipeSouza11
SauloeArthur
joaoguil3
Fagner
TIKO
NKKF
darkrj
JohnRambo
SauloeArthur
Arcebispo
dutrabr100
speedluk
Triskal
ProBrStalker
MiguelAon
Magnatah
rodrigold
daniel.karling
gui78h3
Edivandro2706
NKKF
wooZbr
Pokedlg
SauloeArthur
Pokedlg
KonigOficial
Pokedlg
ffabim
pdsimulador
EricknhYT
chicotx56
NickDev
Valakinhas

[TUTORIAL] Identificar qual a melhor qualidade gráfica baseada no Hardware

Ir em baixo

TUTORIAL [TUTORIAL] Identificar qual a melhor qualidade gráfica baseada no Hardware

Mensagem por Pokedlg Seg Jan 25, 2021 5:39 pm

[TUTORIAL] Identificar automaticamente qual a melhor qualidade gráfica baseada no Hardware

Podemos fazer um sistema básico e avançado de identificação de hardware, na própria unity, se voce ir em Edit>Project Settings>Quality voce verá que existem já varias Qualidade de Gráficos, provavelmente(Fastest, Fast, Simple, Good, Beautiful, Fantastic), e voce pode até mesmo personalizar e modificar os componentes da qualidade, como Shadows, Anti Aliasing, Qualidade de texturas e etc. 

Na minha unity eu modifiquei os nomes delas por (Minimun, Very Low, Low, Medium, High, Ultra High) e modifiquei um pouco as configurações do Ultra High e High.

[TUTORIAL] Identificar qual a melhor qualidade gráfica baseada no Hardware NYdWjHz

Primeiro para conseguir pegar informação dos Hardwares voce tem que utilizar o SystemInfo, ele vai ser o principal componente que vamos usar aqui para conseguir pegar informações dos hardware, o que suporta e o que nao suporta, qual a CPU, quantos Cores, Frequencia, qual a GPU, memória, modelo, Id, enfim. Primeiro vamos fazer detectar qual a CPU(e suas configurações) e GPU(e suas configurações) presente na máquina.

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.Rendering;

 public class IdentifyHardware : MonoBehaviour
 {


    [Header("CPU")]
    public int Core;
    public int frequency;
    public string type;

    [Header("GPU")]
    public string Name; public string Vendor;
    public int Memory;
    public int ID;
    public string Version;
    public int ShaderLevel;
    public bool MultiThreaded;


    void Start()
    {
        Core = SystemInfo.processorCount;
        frequency = SystemInfo.processorFrequency;
        type = SystemInfo.processorType;


        ID = SystemInfo.graphicsDeviceID;
        Name = SystemInfo.graphicsDeviceName;
        Vendor = SystemInfo.graphicsDeviceVendor;
        Version = SystemInfo.graphicsDeviceVersion;
        Memory = SystemInfo.graphicsMemorySize;
        MultiThreaded = SystemInfo.graphicsMultiThreaded;
        ShaderLevel = SystemInfo.graphicsShaderLevel;
    }
}



Pronto, com isso ao dar Start já podemos detectar as informações mais importantes da nossa CPU e GPU.

Bom, agora vem a parte mais chatinha do nosso tutorial, que é saber o que sua máquina suporta e nao suporta, baseado nisso, precisaremos criar uma array do tipo bool e colocar as coisas mais importantes que precisamos saber para funcionar os gráficos de um jogo, para cada componente que sua máquina suporta retornará true, para cada componente nao suportado retornará false, isso englobando qualidades de texturas, sombras, shader, buffer, anti anliasing, anisotropic, renderizações, cubemaps, ray traicing e etc. Para detectarmos quantas componentes da maquina retornarm true precisamos criar um foreach e uma variavel que acrescenta 1 para cada true retornado na nosso array booleana.

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.Rendering;

 public class IdentifyHardware : MonoBehaviour
 {

    [Header("CPU")]
    public int Core;
    public int frequency;
    public string type;

    [Header("GPU")]
    public string Name; public string Vendor;
    public int Memory;
    public int ID;
    public string Version;
    public int ShaderLevel;
    public bool MultiThreaded;

    [Header("Supported")]
    public int trueAmount;
    private bool[] supports;
    public string porcentagem;
    public bool linear;
    public bool MSAA2x;
    public bool MSAA4x;
    public bool MSAA8x;


    void Start()
    {
        Core = SystemInfo.processorCount;
        frequency = SystemInfo.processorFrequency;
        type = SystemInfo.processorType;

        ID = SystemInfo.graphicsDeviceID;
        Name = SystemInfo.graphicsDeviceName;
        Vendor = SystemInfo.graphicsDeviceVendor;
        Version = SystemInfo.graphicsDeviceVersion;
        Memory = SystemInfo.graphicsMemorySize;
        MultiThreaded = SystemInfo.graphicsMultiThreaded;
        ShaderLevel = SystemInfo.graphicsShaderLevel;

        supports = new bool[]
        {
            SystemInfo.supportsShadows,
            linear = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.Linear),
            MSAA2x = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.MSAA2x),
            MSAA4x = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.MSAA4x),
            MSAA8x = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.MSAA8x),
            SystemInfo.supports2DArrayTextures,
            SystemInfo.supports3DRenderTextures,
            SystemInfo.supports3DTextures,
            SystemInfo.supportsComputeShaders,
            SystemInfo.supportsCubemapArrayTextures,
            SystemInfo.supportsGeometryShaders,
            SystemInfo.supportsSparseTextures,
            SystemInfo.supportsRawShadowDepthSampling,
            SystemInfo.supportsHardwareQuadTopology,
            SystemInfo.supportsRawShadowDepthSampling,
            SystemInfo.supportsMipStreaming,
            SystemInfo.supportsMultisampleAutoResolve,
            SystemInfo.supportsMotionVectors,
            SystemInfo.supportsRayTracing,
            SystemInfo.supportsSetConstantBuffer,
            SystemInfo.supports32bitsIndexBuffer,
            SystemInfo.supportsSeparatedRenderTargetsBlend,
            SystemInfo.supportsInstancing
        };

        foreach(bool Supported in supports)
        {
            if(Supported == true) trueAmount++;

        }
    }
}


Deve ficar assim, a nossa variavel trueAmount irá conter o valor de quantas retornarám true na nossa array bool supports. Agora precisamos fazer com que baseado nos valores true da array defina um valor para detectar qual o gráfico melhor suportado para a máquina, tudo isso baseado em uma porcentagem de quantidades de elementos na array, que finalmente denominará qual é o gráfico mais acessível para aquela GPU e CPU.

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.Rendering;

 public class IdentifyHardware : MonoBehaviour
 {

    [Header("CPU")]
    public int Core;
    public int frequency;
    public string type;

    [Header("GPU")]
    public string Name; public string Vendor;
    public int Memory;
    public int ID;
    public string Version;
    public int ShaderLevel;
    public bool MultiThreaded;

    [Header("Supported")]
    public int trueAmount;
    private bool[] supports;
    public string porcentagem;
    public bool linear;
    public bool MSAA2x;
    public bool MSAA4x;
    public bool MSAA8x;

    void Start()
    {
        Core = SystemInfo.processorCount;
        frequency = SystemInfo.processorFrequency;
        type = SystemInfo.processorType;

        ID = SystemInfo.graphicsDeviceID;
        Name = SystemInfo.graphicsDeviceName;
        Vendor = SystemInfo.graphicsDeviceVendor;
        Version = SystemInfo.graphicsDeviceVersion;
        Memory = SystemInfo.graphicsMemorySize;
        MultiThreaded = SystemInfo.graphicsMultiThreaded;
        ShaderLevel = SystemInfo.graphicsShaderLevel;

        supports = new bool[]
        {
            SystemInfo.supportsShadows,
            linear = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.Linear),
            MSAA2x = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.MSAA2x),
            MSAA4x = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.MSAA4x),
            MSAA8x = SystemInfo.IsFormatSupported(GraphicsFormat.None, FormatUsage.MSAA8x),
            SystemInfo.supports2DArrayTextures,
            SystemInfo.supports3DRenderTextures,
            SystemInfo.supports3DTextures,
            SystemInfo.supportsComputeShaders,
            SystemInfo.supportsCubemapArrayTextures,
            SystemInfo.supportsGeometryShaders,
            SystemInfo.supportsSparseTextures,
            SystemInfo.supportsRawShadowDepthSampling,
            SystemInfo.supportsHardwareQuadTopology,
            SystemInfo.supportsRawShadowDepthSampling,
            SystemInfo.supportsMipStreaming,
            SystemInfo.supportsMultisampleAutoResolve,
            SystemInfo.supportsMotionVectors,
            SystemInfo.supportsRayTracing,
            SystemInfo.supportsSetConstantBuffer,
            SystemInfo.supports32bitsIndexBuffer,
            SystemInfo.supportsSeparatedRenderTargetsBlend,
            SystemInfo.supportsInstancing
        };

        foreach(bool Supported in supports)
        {
            if(Supported == true) trueAmount++;
        }
        var value = (double)trueAmount/supports.Length * 100;
        value = Mathf.Round((float)value);
        porcentagem = value + "%";

        if(value >=0 && value <=20) QualitySettings.SetQualityLevel(0);
        if(value >=21 && value <=40) QualitySettings.SetQualityLevel(1);
        if(value >=41 && value <=60) QualitySettings.SetQualityLevel(2);
        if(value >=61 && value <=80) QualitySettings.SetQualityLevel(3);
        if(value >=71 && value <=98) QualitySettings.SetQualityLevel(4);
        if(value >=99 && value <=100) QualitySettings.SetQualityLevel(5);

        if(MSAA2x) QualitySettings.antiAliasing = 2;
        if(MSAA4x) QualitySettings.antiAliasing = 4;
        if(MSAA8x) QualitySettings.antiAliasing = 8;

    }
 }

E pronto, chegamos ao fim do nosso tutorial, o que fizemos foi criar um porcentagem para a quantidade suportada de componentes e baseada nessa porcentagem, automaticamente ao apertar Start e irá percorrer o foreach, calcular quantas retornaram um valor true, atribuir este valor a trueAmount, que faremos uma divisão e multiplicação para identificarmos qual foi a porcentagem aproximada de componentes suportados, e para conseguirmos visualizar, precisamos de um string, chamada porcentagem, aí baseada no valor gerado, podemos dividir entre 100% para cada e mudar o QualitySettings, colocando um level, para:

0 = Minimum
1 = Very Low
2 = Low
3 = Medium
4 = High
5 = Ultra High

E voce pode ver que eu criei mais algumas variaveis, que são a MSAA2x, MSAA4x, MSAA8x. Pois o unity em todas suas qualidades graficas nao colocam um Anti Aliasing, então eu fiz, que se sua máquina suportar algums desses Anti Aliasing, automaticamente irá implementalo.

Ja o sistema avançado voce pode criar um novo level Quality e criar variaveis booleanas para quando suporta for true.
Pokedlg
Pokedlg
Programador

Masculino PONTOS : 546
REPUTAÇÃO : 56
Áreas de atuação :
Iniciante(C#.NET, Animação, ShaderLab)
Intermediário(Unity, Shader Graph)
Respeito as regras : [TUTORIAL] Identificar qual a melhor qualidade gráfica baseada no Hardware WvDYdlf

Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum