Como ter vários GameObjects compartilhando partes do mesmo material?

9

Minha pergunta é: existe alguma maneira de GameObjects compartilhar partes do mesmo material, não um clone, mas uma extensão de um? Por exemplo, nesse caso, nove objetos de jogo que compartilham apenas o mesmo material aumentado para atingir o tamanho de nove:

Relva

E, no caso, excluo por exemplo um no meio, ele manterá o mesmo material aumentado com o espaço em branco no interior:

Grass2

Para esse propósito, usei um material por objeto, mas minha intenção é usá-lo apenas uma textura para vários objetos ou, por exemplo, mais de uma textura em partes diferentes do mesmo. (Como o botão de pintura que temos no Unity3D Terrains personalizado).

JamesB
fonte

Respostas:

2

Você já pensou em usar o Shadergraph da Unity para criar seu próprio shader para o material? Você pode conseguir o que deseja usando a posição do worldspace para texture / uvs. Não sou bom em explicá-lo e não sou bom em shaders, mas simulei um exemplo rápido para você como shader de água, porque estava entediado e já estava brincando no meu projeto dedicado a experimentos.

Esta figura mostra que os planos sobrepostos parecem compartilhar o mesmo material materiais de exemplo

Este é o exemplo feito no shadergraph Exemplo de Shadergraph

Resumo rápido dos nós do shader do meu exemplo, como eu os entendo

  1. Esses nós estão pegando x e z valores no espaço mundial e combinando-os em um vetor 2
  2. Este nó está usando os valores xz e os deslocando com base nos nós em 3
  3. usando o tempo e um Vector 2, para rolar o deslocamento uv. dá um efeito de onda
  4. Multiplicando o valor com base no valor de Lado a lado normal .
  5. Obtém os dados UV de 4 e um mapa normal
  6. Força normal. muda a força do efeito
  7. Toma todos os dados de 1 - 6 e a textura da água e alimenta o albedo em 8
  8. todos os nós são inseridos aqui para que o shader altere como cada uma dessas propriedades afeta o material.

Se alguém achar que algo que eu disse ou fiz está incorreto ou pode ser melhorado, sinta-se à vontade para me corrigir. Ainda estou aprendendo e um empurrão na direção certa é sempre bem-vindo. Eu enviei a cena de exemplo para o Google Drive para você mexer. não tem certeza se a atribuição é necessária, mas o ativo de água usado é gratuito e de gametextures.com

faulknerj
fonte
0

Você pode criar um atlas de sprite a partir de uma textura, criar um objeto filho para o seu avião ou qualquer forma que esteja usando, arrastar recortes de sprites criados, girar e colocar a criança dentro do avião gameobject da maneira que desejar e, veja a foto abaixo para ver o que eu quero dizer,

atlas de sprite

Pode ser um trabalho tedioso, mas parece que esta solução se encaixa no que você deseja.

Voon Van Eustace
fonte
0

Outra opção é usar o objeto Projetor na pasta de ativos padrão da unidade. Não é muito eficiente, mas é realmente fácil de configurar. Portanto, para casos simples, pode ser exatamente o que você está procurando. Mas, como eu disse, tem um impacto significativo no desempenho, especialmente se você estiver projetando texturas maiores.

Adam B
fonte