app pesado
2 participantes
Página 1 de 1
app pesado
boas pessoal
preciso de uma ajuda de vocês
mas dessa vez não é em código (eu acho)
hehe
eu estou fazendo um app de catalogo, e nesse catalogo serão necessários mais ou menos uns 2 mil itens por alto
ai o codigo que eu fiz funciona bem, até uns 150 itens, se passar disso ele começa a travar e o movimento que deveria ser em lerp não funfa
ja tentei de duas formas e nada, a primeira com for, ai eu pensei que poderia ser o for no update com tantos itens poderia estar deixando lento, mas eu troquei a forma de passar o catalogo e nada, continua do mesmo jeito
com mais de 150 ou 200 itens começa a travar, não funciona bem.
alguém pode ajudar?
preciso de uma ajuda de vocês
mas dessa vez não é em código (eu acho)
hehe
eu estou fazendo um app de catalogo, e nesse catalogo serão necessários mais ou menos uns 2 mil itens por alto
ai o codigo que eu fiz funciona bem, até uns 150 itens, se passar disso ele começa a travar e o movimento que deveria ser em lerp não funfa
ja tentei de duas formas e nada, a primeira com for, ai eu pensei que poderia ser o for no update com tantos itens poderia estar deixando lento, mas eu troquei a forma de passar o catalogo e nada, continua do mesmo jeito
com mais de 150 ou 200 itens começa a travar, não funciona bem.
alguém pode ajudar?
- Código:
//com for....
for (int i = 0; i < Px.Length; i++)
{
if (i < PxAtual)
{
Px[i].transform.position = Vector3.Lerp(Px[i].transform.position, Esq.transform.position, Time.deltaTime * vel);
}
if (i > PxAtual)
{
Px[i].transform.position = Vector3.Lerp(Px[i].transform.position, Dir.transform.position, Time.deltaTime * vel);
}
}
//sem o for normalzão generico....
if (PassarPX == true)
{
Px[PxPosterior].transform.position = Vector3.Lerp(Px[PxPosterior].transform.position, Esq.transform.position, Time.deltaTime * vel);
//PassarPX = false;
}
if (VoltarPX == true)
{
Px[PxAnterior].transform.position = Vector3.Lerp(Px[PxAnterior].transform.position, Dir.transform.position, Time.deltaTime * vel);
//VoltarPX = false;
}
Última edição por Édipo em Sex Set 03, 2021 8:00 pm, editado 1 vez(es)
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
opaFagner escreveu:O for tem problemas, vai pesar sim deixar isso na Update. Mas o que me preocupa é a quantidade de itens, eles são 3D? ficam todos instanciados na cena?
Com que frequência você espera que o jogador mude de item selecionado?, quantos você espera que ele veja numa sessão? os 2 mil?
Acho que precisa ter isso definido pra pensar numa estratégia melhor pra mostrar os itens;
então amigo, eles não são 3d (o app é só 2d), apenas imagens do canvas, nada de mais, uma fotinha em baixa resolução (menos de 50kb) e um texto, nada de mais, por isso meu espanto também.
ficam todos instanciados na cena pois preciso que fiquem em ordem alfabética.
eu até testei aqui pra aparecer na cena somente o que estiver sendo visto pelo usuário, mas pra organizar em ordem alfabética precisa que estejam visíveis, tem como fazer isso com itens desativados na scene?
a frequência com que o usuário vai mudar é grande, pq será um catalogo de itens pra serem consultados sobre animais, então ele vai passar, voltar, toda hora que quiser ver algo especifico, pois nessas imagens dos canvas, vai a foto do bicho e as especificações/características deles, mas ele só vai ver 1 de cada vez.
esse catalogo que eu estou falando é uma tela especifica, não é um jogo que fica aparecendo uma hora, quando a pessoa quiser ver tal animais e quiser saber as especificações e características dos bichos ele vai nessa tela, mas infelizmente vai precisar que seja pelo menos uns 1500 a 2000 itens nesse catalogo
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
ish se eu for ordenar tudo toda vez que adicionar algo novo, vai ser tenso, toda vez modificar 100,200,1000 ou 2000 itens toda vez, vai ser foda, a ordenação é tão rápida que não influencia em nada, pelo menos que eu notei até agora.Fagner escreveu:Então, eu tenho duas sugestões pra ti.
A primeira é não fazer o ordenamento na start, visto que isso vai afetar o tempo de carregamento do jogo, deixando o mesmo travado até o ordenamento terminar. Uma alternativa é fazer isso direto no Editor, já ordenando o próprio array sempre que você adicionar um novo item.
A segunda sugestão tem a ver com a forma de armazenar isso, você não vai querer tudo na cena todo o tempo. Você pode ter uma classe chamada Item que vai guardar a referencia do sprite e de todos os outros dados dessa imagem, isso você cria um array e preenche no inspector, ordenando com o script de editor.
Durante a execução, você só vai pegar o índice do item atual o anterior e o próximo, carrega só esses 3 itens pra você poder fazer sua animação com o lerp, no fim de cada animação, você atualiza o índice e carrega as novas três imagens.
Acredito que essa seja uma das melhores formas em relação à performance.
Aqui tem um exemplo pra ti do script de itens e o Editor que faz a ordenação, já deve te dar essa base que falei, aí fica contigo a parte de animação da troca e gerenciamento do IndiceAtual, que até acredito que já tenha.
https://drive.google.com/file/d/1a87vcy2IFL0WPtZd7jCprtvvGRpRQlaJ/view?usp=sharing
eu vou tentar fazer isso que vc disse sobre somente aparecer o que for usar, mas eu não entendo, são só imagens do canvas e alguns textos, não era pra estar lento desse jeito, jogos com milhões de vertices e texturas enormes funcionando normalmente no celular, e isso travando desse jeito não faz nenhum sentido pra mim, mas ok, vou dar uma olhada no que vc postou e tentar pra ver se consigo resolver aqui, se mais alguem tiver mais alguma ideia de como resolver pode mandar que nois vamo testando tudo que aparecer hehe
mais uma duvida por favor, tem como eu acessar todos os itens de uma array de uma vez? sem o for ou derivados?
alto tipo um
array.all
sei la]
ou tipo, todos os elementos do array maiores que 5 por exemplo fazer alguma ação
tem algum comando que não conheça que pode fazer isso?
vlw
flw
Última edição por Édipo em Sáb Set 04, 2021 9:37 pm, editado 1 vez(es)
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
faz pra ordenar automaticamente pelo editor ai só vai pesar pra vc,e outra faz aparecer os itens conforme precise, também tem um negocio chamado object pooling que também deve resolver esse problema de lags.Édipo escreveu:ish se eu for ordenar tudo toda vez que adicionar algo novo, vai ser tenso, toda vez modificar 100,200,1000 ou 2000 itens toda vez, vai ser foda, a ordenação é tão rápida que não influencia em nada, pelo menos que eu notei até agora.Fagner escreveu:Então, eu tenho duas sugestões pra ti.
A primeira é não fazer o ordenamento na start, visto que isso vai afetar o tempo de carregamento do jogo, deixando o mesmo travado até o ordenamento terminar. Uma alternativa é fazer isso direto no Editor, já ordenando o próprio array sempre que você adicionar um novo item.
A segunda sugestão tem a ver com a forma de armazenar isso, você não vai querer tudo na cena todo o tempo. Você pode ter uma classe chamada Item que vai guardar a referencia do sprite e de todos os outros dados dessa imagem, isso você cria um array e preenche no inspector, ordenando com o script de editor.
Durante a execução, você só vai pegar o índice do item atual o anterior e o próximo, carrega só esses 3 itens pra você poder fazer sua animação com o lerp, no fim de cada animação, você atualiza o índice e carrega as novas três imagens.
Acredito que essa seja uma das melhores formas em relação à performance.
Aqui tem um exemplo pra ti do script de itens e o Editor que faz a ordenação, já deve te dar essa base que falei, aí fica contigo a parte de animação da troca e gerenciamento do IndiceAtual, que até acredito que já tenha.
https://drive.google.com/file/d/1a87vcy2IFL0WPtZd7jCprtvvGRpRQlaJ/view?usp=sharing
eu vou tentar fazer isso que vc disse sobre somente aparecer o que for usar, mas eu não entendo, são só imagens do canvas e alguns textos, não era pra estar lento desse jeito, jogos com milhões de vertices e texturas enormes funcionando normalmente no celular, e isso travando desse jeito não faz nenhum sentido pra mim, mas ok, vou dar uma olhada no que vc postou e tentar pra ver se consigo resolver aqui, se mais alguem tiver mais alguma ideia de como resolver pode mandar que nois vamo testando tudo que aparecer hehe
mais uma duvida por favor, tem como eu acessar todos os itens de uma array de uma vez? sem o for ou derivados?
alto tipo um
array.all
sei la
vlw
flw
diegopds- Mestre
- PONTOS : 3420
REPUTAÇÃO : 52
Idade : 26
Respeito as regras :
Re: app pesado
tentei fazer com que aparecesse somente o que fosse usar, mas mesmo assim continua travandoFagner escreveu:Então, eu tenho duas sugestões pra ti.
A primeira é não fazer o ordenamento na start, visto que isso vai afetar o tempo de carregamento do jogo, deixando o mesmo travado até o ordenamento terminar. Uma alternativa é fazer isso direto no Editor, já ordenando o próprio array sempre que você adicionar um novo item.
A segunda sugestão tem a ver com a forma de armazenar isso, você não vai querer tudo na cena todo o tempo. Você pode ter uma classe chamada Item que vai guardar a referencia do sprite e de todos os outros dados dessa imagem, isso você cria um array e preenche no inspector, ordenando com o script de editor.
Durante a execução, você só vai pegar o índice do item atual o anterior e o próximo, carrega só esses 3 itens pra você poder fazer sua animação com o lerp, no fim de cada animação, você atualiza o índice e carrega as novas três imagens.
Acredito que essa seja uma das melhores formas em relação à performance.
Aqui tem um exemplo pra ti do script de itens e o Editor que faz a ordenação, já deve te dar essa base que falei, aí fica contigo a parte de animação da troca e gerenciamento do IndiceAtual, que até acredito que já tenha.
https://drive.google.com/file/d/1a87vcy2IFL0WPtZd7jCprtvvGRpRQlaJ/view?usp=sharing
tentei com for (que é o único jeito que eu sei), mesmo assim continua travando
não tem poligono e nem texturas gigantestas e trava desse jeito, não consigo entender.
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
ordenar automaticamente pelo editor? como assim?diegopds escreveu:faz pra ordenar automaticamente pelo editor ai só vai pesar pra vc,e outra faz aparecer os itens conforme precise, também tem um negocio chamado object pooling que também deve resolver esse problema de lags.Édipo escreveu:ish se eu for ordenar tudo toda vez que adicionar algo novo, vai ser tenso, toda vez modificar 100,200,1000 ou 2000 itens toda vez, vai ser foda, a ordenação é tão rápida que não influencia em nada, pelo menos que eu notei até agora.Fagner escreveu:Então, eu tenho duas sugestões pra ti.
A primeira é não fazer o ordenamento na start, visto que isso vai afetar o tempo de carregamento do jogo, deixando o mesmo travado até o ordenamento terminar. Uma alternativa é fazer isso direto no Editor, já ordenando o próprio array sempre que você adicionar um novo item.
A segunda sugestão tem a ver com a forma de armazenar isso, você não vai querer tudo na cena todo o tempo. Você pode ter uma classe chamada Item que vai guardar a referencia do sprite e de todos os outros dados dessa imagem, isso você cria um array e preenche no inspector, ordenando com o script de editor.
Durante a execução, você só vai pegar o índice do item atual o anterior e o próximo, carrega só esses 3 itens pra você poder fazer sua animação com o lerp, no fim de cada animação, você atualiza o índice e carrega as novas três imagens.
Acredito que essa seja uma das melhores formas em relação à performance.
Aqui tem um exemplo pra ti do script de itens e o Editor que faz a ordenação, já deve te dar essa base que falei, aí fica contigo a parte de animação da troca e gerenciamento do IndiceAtual, que até acredito que já tenha.
https://drive.google.com/file/d/1a87vcy2IFL0WPtZd7jCprtvvGRpRQlaJ/view?usp=sharing
eu vou tentar fazer isso que vc disse sobre somente aparecer o que for usar, mas eu não entendo, são só imagens do canvas e alguns textos, não era pra estar lento desse jeito, jogos com milhões de vertices e texturas enormes funcionando normalmente no celular, e isso travando desse jeito não faz nenhum sentido pra mim, mas ok, vou dar uma olhada no que vc postou e tentar pra ver se consigo resolver aqui, se mais alguem tiver mais alguma ideia de como resolver pode mandar que nois vamo testando tudo que aparecer hehe
mais uma duvida por favor, tem como eu acessar todos os itens de uma array de uma vez? sem o for ou derivados?
alto tipo um
array.all
sei la
vlw
flw
vc fala pra eu ordenar manualmente?
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
ah ta é que ainda não olhei o exemplo, to tentando as outras alternativasFagner escreveu:o exemplo que mandei tem um botão gigante embaixo do array, é só clicar nele que ele ordena por ordem alfabética todos os itens do array, não precisa clicar a cada novo item, eu quis dizer pra clicar em ordenar quando você inserir novos itens.
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
acabei de testarFagner escreveu:o exemplo que mandei tem um botão gigante embaixo do array, é só clicar nele que ele ordena por ordem alfabética todos os itens do array, não precisa clicar a cada novo item, eu quis dizer pra clicar em ordenar quando você inserir novos itens.
mas mesmo assim não mudou infelizmente
obrigado pela ajuda mas
meu problema não é com a ordenação, ela acontece em milésimos no start, quando a cena inicia os itens ja estão adicionados ao array e ja em ordem, não trava em nada a ordenação alfabética.
não atrapalha, não trava, não faz nada, não interfere em nada, meu problema é com a quantidade de itens que eu preciso
passou de 150 começa a travar, e não é por conta da ordenação pq ela ja foi feita, o problema que estou tendo é realmente com a interação coma quantidade de itens que tem, e infelizmente eu preciso que essa quantidade seja grande, não da pra deixar somente algumas dezenas infelizmente.
teste também com a questão que vc disse sobre mandar aparecer o objeto somente quando for usa-lo, mas eu tive que fazer com for (não sei de outra forma) e mesmo assim continua travando.
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Re: app pesado
pode deixar, resolvi o problema (pelo menos por enquanto ).
se mais alguém aparecer com o mesmo problema é só adicionar máscara(rect mask 2D em componentes) no canvas.
se mais alguém aparecer com o mesmo problema é só adicionar máscara(rect mask 2D em componentes) no canvas.
Édipo- MembroAvançado
- PONTOS : 4007
REPUTAÇÃO : 62
Idade : 36
Respeito as regras :
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos