[TUTORIAL] Otimização Simples por distância
+7
luKkaSs
Yuri Heinz
GibsonDKS
RenanMSV
eumarcio
bruninnho
MarcosSchultz
11 participantes
Página 1 de 1
[TUTORIAL] Otimização Simples por distância
Tutorial em vídeo:
Elaborei este simples script que é MUITO funcional e facil de usar
este script vai no seu Player. linke Objetos na variavel _OBJETOS, e estes serão desativados quando sua distancia for maior do que "DistanciaMaxima" em relação ao player...
gosto de fazer salas e colocar todos os objetos dela dentro de um unico gameObject, e então linkar este gameObject na variavel. se minha distancia for maior do que "DistanciaMaxima", todos os objetos da sala serao desativados...
simples não?
Lembre-se de colocar a tag " Player " no seu player
________________________________________________________________________________________________________________
@@ UM SCRIPT OPCIONAL PARA QUEM QUISER
Se você não quiser linkar objeto por objeto na array, e quiser que o script busque os objetos pela sua tag, basta utilizar este script:
Com este novo script, basta ter um jogador com a tag "Player" e configurar as variáveis "tags" e "DistânciaMaxima"
nas tags, você coloca o número de tags que você pretende usar e da um enter, depois disso, coloque o nome das tags que você pretende usar (diferenciando maiúsculo de minúsculo)
Todos os objetos que possuir as tags que você colocar nesta lista, serão afetados pelo script :D
Elaborei este simples script que é MUITO funcional e facil de usar
- Código:
using UnityEngine;
using System.Collections;
public class Otimizacao : MonoBehaviour {
public GameObject[] _OBJETOS;
private GameObject JOGADOR;
private float DistanciaDoPlayer;
public float DistanciaMaxima = 40;
void Start (){
JOGADOR = GameObject.FindWithTag("Player");
}
void Update (){
for(int i = 0; i <_OBJETOS.Length; i++){
DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position,_OBJETOS[i].transform.position);
if(DistanciaDoPlayer >= DistanciaMaxima){
_OBJETOS[i].SetActive (false);
}else{
_OBJETOS[i].SetActive (true);
}
}
}
}
este script vai no seu Player. linke Objetos na variavel _OBJETOS, e estes serão desativados quando sua distancia for maior do que "DistanciaMaxima" em relação ao player...
gosto de fazer salas e colocar todos os objetos dela dentro de um unico gameObject, e então linkar este gameObject na variavel. se minha distancia for maior do que "DistanciaMaxima", todos os objetos da sala serao desativados...
simples não?
Lembre-se de colocar a tag " Player " no seu player
________________________________________________________________________________________________________________
@@ UM SCRIPT OPCIONAL PARA QUEM QUISER
Se você não quiser linkar objeto por objeto na array, e quiser que o script busque os objetos pela sua tag, basta utilizar este script:
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Otimizacao : MonoBehaviour {
public string[] tags;
private List<GameObject> _OBJETOS = new List<GameObject>();
private GameObject JOGADOR;
private float DistanciaDoPlayer;
public float DistanciaMaxima = 40;
void Start (){
JOGADOR = GameObject.FindWithTag("Player");
for (int x = 0; x < tags.Length; x++) {
_OBJETOS.AddRange (GameObject.FindGameObjectsWithTag (tags [x]));
}
}
void Update (){
for(int i = 0; i <_OBJETOS.Count; i++){
DistanciaDoPlayer = Vector3.Distance(JOGADOR.transform.position,_OBJETOS[i].transform.position);
if(DistanciaDoPlayer >= DistanciaMaxima){
_OBJETOS[i].SetActive (false);
}else{
_OBJETOS[i].SetActive (true);
}
}
}
}
Com este novo script, basta ter um jogador com a tag "Player" e configurar as variáveis "tags" e "DistânciaMaxima"
nas tags, você coloca o número de tags que você pretende usar e da um enter, depois disso, coloque o nome das tags que você pretende usar (diferenciando maiúsculo de minúsculo)
Todos os objetos que possuir as tags que você colocar nesta lista, serão afetados pelo script :D
Última edição por MarcosSchultz em Qui Jul 21, 2016 12:52 am, editado 8 vez(es)
Re: [TUTORIAL] Otimização Simples por distância
deixando o jogo mais fluido né?!
bruninnho- Iniciante
- PONTOS : 3682
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
mais fluido e mais leve, você pode desativar grandes blocos de cenário aumentando em muito os Draw Calls
Re: [TUTORIAL] Otimização Simples por distância
eu tenho que linkar o objeto da hierarquia no "_Objeto"? É isso né?
bruninnho- Iniciante
- PONTOS : 3682
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
no _objetos, coloque uma quantidade e de um enter, ai aparecerão variaveis para você linkar os objetos, ou o objeto pai dos outros
ai é so linkar
ai é so linkar
Re: [TUTORIAL] Otimização Simples por distância
Muito bom vou usar este as vezes, mas eu vi que um pessoa comentou sobre qualidade no you tube, não teria com reduzi e a qualidade
eumarcio- Iniciante
- PONTOS : 3304
REPUTAÇÃO : 0
Respeito as regras :
RenanMSV- Instrutor
- PONTOS : 4487
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
Da pra fazer algumas coisas com oclusion culling, também da pra reduzir a malha, más necessita usar LOD, e isso já é um pouco mais complexo
Re: [TUTORIAL] Otimização Simples por distância
Isso é tipo o sistema de chuncks do minecraft?
GibsonDKS- Avançado
- PONTOS : 3563
REPUTAÇÃO : 22
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
Sim, só que reduzindo a malha...
Minecraft tem uns 6 sistemas de otimização rodando juntos... é algo bem complexo de se fazer
Minecraft tem uns 6 sistemas de otimização rodando juntos... é algo bem complexo de se fazer
Re: [TUTORIAL] Otimização Simples por distância
Esse código vai servir pra muita coisa. Muita mesmo, tava precisando bastante desse código, principalmente pras lights, Mas vou ussar para Tudo.
Yuri Heinz- Avançado
- PONTOS : 3617
REPUTAÇÃO : 38
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
mais no caso seria melhor usar um script do q o LOD certo? pq o lod por exemplo nao desativa a colisao do objeto, ele so troca as malhas.
luKkaSs- MembroAvançado
- PONTOS : 3356
REPUTAÇÃO : 19
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
luKkaSs escreveu:mais no caso seria melhor usar um script do q o LOD certo? pq o lod por exemplo nao desativa a colisao do objeto, ele so troca as malhas.
Depende, por que há casos que não da para desativar os objetos, pois ficaria estranho se eles sumissem da cena, no caso de cenários abertos... Ai não tem jeito a não ser usar o LOD
Re: [TUTORIAL] Otimização Simples por distância
sim claro, mas ate o LOD tem um limete de distancia q no caso e CULLED, nesse ele não renderiza mais o bj, so q os scripts, colisões etc, ainda estariam ativos e consumindo desempenho de forma desnecessária, já q o objeto não e mais visível por esta muito longe.
luKkaSs- MembroAvançado
- PONTOS : 3356
REPUTAÇÃO : 19
Idade : 28
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
Funciona para unity 5 ?
ElielsonRitter- Iniciante
- PONTOS : 3250
REPUTAÇÃO : 0
Respeito as regras :
Weslley- Moderador
- PONTOS : 5730
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
@@ tutorial atualizado para buscar os objetos pela sua tag :D
Re: [TUTORIAL] Otimização Simples por distância
Como assim? esse tópico é o tutorial ué, o primeiro post é o tutorial O.o
Weslley- Moderador
- PONTOS : 5730
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Weslley- Moderador
- PONTOS : 5730
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
Uma pergunta só. O script que usa tags em vez de ter que colocar os objetos na array, funciona da mesma forma do outro, só mudando que ao invés de colocar os objetos na array só precisa colocar uma tag neles?
Re: [TUTORIAL] Otimização Simples por distância
Quando eu coloco esse segundo script no unity dá erro ;-;
Re: [TUTORIAL] Otimização Simples por distância
Qual erro ? existe objetos com as tags definidas no script na cena ?
Weslley- Moderador
- PONTOS : 5730
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: [TUTORIAL] Otimização Simples por distância
Não lembro direito, eu tirei o script pra poder testar o jogo, é alguma coisa com object ter sido destrupido ou coisa assimweslleyFx escreveu:Qual erro ? existe objetos com as tags definidas no script na cena ?
Re: [TUTORIAL] Otimização Simples por distância
Você não pode "otimizar" objetos que vão ser destruídos ou vão desaparecer da cena. Isto serve apenas para objetos estáticos.
Re: [TUTORIAL] Otimização Simples por distância
Mas dá o erro quando eu coloco o script no player, sem ter feito nada nos objetos ainda
Re: [TUTORIAL] Otimização Simples por distância
Manda prints do erro, mas provavelmente você está errando o ultra básico, que é o nome do script. Tem que ser igual ao nome da classe, conforme o tutorial.
Re: [TUTORIAL] Otimização Simples por distância
Olá, fiz exatamente como você escreveu mas os objetos que coloco na tag, onde inclue terrain, blocos, casas e arvores, simplesmente desaparecem e quando me aproximo eles não voltam mais.MarcosSchultz escreveu:
________________________________________________________________________________________________________________
@@ UM SCRIPT OPCIONAL PARA QUEM QUISER
Se você não quiser linkar objeto por objeto na array, e quiser que o script busque os objetos pela sua tag...
Tópicos semelhantes
» [TUTORIAL] Como spawnar inimigos [Tutorial simples]
» [TUTORIAL] Otimização de colisores ( desativa conforme a distância )
» [TUTORIAL] Dicas de otimização
» [TUTORIAL] Unity 5 - Otimização por blocos
» [TUTORIAL] Unity 5 - Otimização com LOD Group
» [TUTORIAL] Otimização de colisores ( desativa conforme a distância )
» [TUTORIAL] Dicas de otimização
» [TUTORIAL] Unity 5 - Otimização por blocos
» [TUTORIAL] Unity 5 - Otimização com LOD Group
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos