Como posso criar um jogo no Unity com o mínimo / nenhum uso do editor visual?

24

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?

Raio
fonte
11
Votando para fechar, esta é uma recomendação básica disfarçada como uma pergunta sobre o Unity.
BlueRaja - Danny Pflughoeft
2
Na verdade, não tenho certeza se concordo com isso, embora não revogue uma votação estreita da comunidade. No entanto, observarei que esta pergunta está perguntando especificamente sobre alguns recursos do Unity: respostas que não abordam e que podem ser removidas. Vamos não transformar isso em um off questão tema, se não temos a, ok?
Josh
2
A maioria dos desenvolvedores procura um editor visual em algum momento para projetar seus níveis, porque posicionar visualmente é muito mais simples do que definir a posição de cada pequeno doodad no código. O mesmo vale para editar / projetar layouts de GUI. Ter esse material já incorporado é um enorme benefício IMHO.
bummzack
4
I prefer writing my own level editor which provides only the stuff really neccessary for my gameTudo 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.
jhocking
3
@jhocking Então nossa definição de mecanismo de jogo parece ser muito diferente. Uma biblioteca de classes é um mecanismo de jogo se abstrair tarefas típicas de jogos como matemática de câmera, um sistema de som e talvez até um pouco de material físico, mas um designer não é um requisito e, na minha opinião, nem deve ser um item obrigatório. .
Ray

Respostas:

27

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:

using UnityEngine;

public class Main : MonoBehaviour
{

    void Start ()
    {
        // initialize the game
    }

    void Update ()
    {
        // update physics
    }

}

No jogo, construo dinamicamente o ambiente assim:

GameObject floor = GameObject.CreatePrimitive (PrimitiveType.Cube);
floor.renderer.material.color = RandomGreen ();

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ê.

Viliam Búr
fonte
2
Eu diria que esta parece ser uma resposta muito clara e sólida para apenas um novato Unidade :)
Ray
Obrigado! Caso contrário, sou um programador experiente, mas este é o meu primeiro projeto no Unity e está longe de terminar. Ainda não usei pré-fabricados. Pode haver algumas complicações das quais não estou ciente, por isso recomendo seguir meus conselhos com um grão de sal. A propósito, a serialização no Unity parece um pouco contra-intuitiva para mim. Vou ter que estudá-lo mais profundamente, e isso pode influenciar algumas decisões de design.
Viliam Búr 13/08/14
9

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)

jhocking
fonte
11
estava no meio da leitura de seu livro quando me deparei com esta resposta
pleaner max
6

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.

midasmax
fonte
2

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.

vulpineblazeyt
fonte