Eu gostaria de escrever um jogo completamente em c #. Na minha busca por um mecanismo, encontrei o Unity3D, mas todos os tutoriais e documentação estão falando sobre um editor visual e o IDE do Unity no qual você clica e aponta para criar cenas e scripts.
Eu não quero fazer isso. Eu prefiro a cobertura completa do código do que os designers que abstraem as coisas de mim. Eu gostaria de escrever apenas código C # puro do zero ou, se necessário, os scripts do Unity como uma adição. Não consegui encontrar nenhuma explicação ou documentação sobre isso; como posso criar um jogo usando o Unity e fazendo uso mínimo (ou não) do editor visual?
I prefer writing my own level editor which provides only the stuff really neccessary for my game
Tudo bem, isso significa basicamente que você não quer usar um mecanismo de jogo, mas sim programar com uma biblioteca de gráficos. No entanto, você já encontrou um problema técnico ao tentar fazer isso, então ... sinto uma contradição aqui.Respostas:
Sou iniciante no Unity, mas é assim que faço no momento e reduz ao mínimo o uso do editor:
No editor, eu tenho apenas três objetos: um GameObject vazio chamado "main", uma câmera e uma luz. E isso é apenas porque, até agora, eu só trabalho com uma única câmera e uma única luz, então foi mais rápido dessa maneira. Mais tarde provavelmente os removerei, e apenas o "principal" permanecerá.
Em "Ativos / MyScripts", tenho uma classe "Principal", que é adicionada ao GameObject "principal" como um comportamento. O que significa que, quando o programa é iniciado, a classe "Main" é instanciada e seu método é chamado. A classe "Principal" é assim:
No jogo, construo dinamicamente o ambiente assim:
Mas isso é porque até agora estou apenas fazendo um protótipo. Mais tarde, vou querer substituir os cubos por algumas coisas legais editadas no Blender. O que exigirá torná-los no Blender e importá-los para as Unidades como "prefabs". Da mesma forma, instanciarei os "prefabs" do código C #.
Se você quiser fazer um objeto reagir a eventos, como colisões com outros objetos, instancie o objeto e adicione-os dinamicamente a uma classe de comportamento, que é uma classe C # derivada do MonoBehavior. Por exemplo, se você quiser ter um carro, faça uma pré-fabricada e escreva uma classe "CarBehavior" para o seu comportamento no jogo.
Dessa forma, você pode reduzir a interação com o editor ao mínimo, embora provavelmente não seja completamente zero. Agora depende se esta é uma solução aceitável para você.
fonte
Ao trabalhar com o Unity, você deve trabalhar no editor do Unity; é simplesmente assim que o Unity funciona.
No entanto, a grande maioria do que você faria como programador não acontece no editor do Unity; os arquivos de script são arquivos de texto externos escritos em um IDE externo e, como programador, você usa apenas o editor do Unity para vincular quais scripts executar e, em seguida, pressionar o Play para executar o jogo. Isso não é diferente de vincular as classes nas configurações do projeto e, em seguida, pressionar Executar no seu IDE.
A maioria das outras ferramentas de desenvolvimento de jogos que possuem um editor visual central também possui um suporte limitado e inflexível para scripts, mas o Unity não sofre essa desvantagem. Embora tudo criado para o Unity acabe passando pelo editor visual, essa interface principal envolve muitos projetos de vinculação a códigos personalizados executados no mecanismo de jogo do Unity. Programadores experientes, não descartem esse ambiente de desenvolvimento, confundindo-o com um criador de jogos clique juntos com capacidade de programação limitada!
(também, parece que o livro que estou escrevendo atualmente seria um ótimo recurso para você, pois é direcionado a programadores experientes)
fonte
Acredito que o que você está procurando é o Quadro Fútil para a Unidade.
Basicamente, você pode fazer toda a sua programação usando scripts sem ter que "arrastar e soltar" coisas ou mexer muito com o editor visual. Tudo o que você precisa é de um único GameObject em sua Cena, que será o contêiner para todo o jogo. Você faz tudo proceduralmente como faria com um editor não visual.
Isenção de responsabilidade: Embora o Futile seja muito centralizado no código, é inevitável que você tenha que mexer com o editor do Unity de alguma maneira. Mas isso é muito reduzido com o Fútil.
fonte
Gostaria de acrescentar todas as boas respostas aqui, especialmente a resposta de @jhocking:
Quase tudo que encontrei no Unity tem uma contrapartida em texto sem formatação na árvore de pastas dos projetos. Eu editei prefabs diretamente e outros gameObjects sem abrir o Unity, e essas alterações foram encontradas com sucesso por outros desenvolvedores ao confirmar.
Embora eu não soubesse muito sobre o Futile Framework até hoje, parece ser uma maneira realmente incrível de entender tudo.
Atualmente, uso todo o material de arrastar e soltar em vez de usar o script, mas isso terá que mudar, pois meu objetivo terá níveis gerados processualmente e bandidos.
Meus dois centavos dizem que basicamente obtém os poucos objetos necessários no Unity e depois depende de scripts em um editor externo. Você pode fazer quase tudo em texto simples.
fonte