Je voudrais écrire un jeu complètement en C #. Dans ma recherche d'un moteur, j'ai trouvé Unity3D, mais tous les didacticiels et la documentation parlent d'un éditeur visuel et de l'IDE Unity dans lequel vous cliquez et pointez pour créer des scènes et des scripts.
Je ne veux pas faire ça. Je préfère une couverture de code complète aux concepteurs qui résument les choses loin de moi. Je voudrais seulement écrire du code C # pur à partir de zéro ou si nécessaire les scripts Unity en complément. Je n'ai trouvé aucune explication ou documentation à ce sujet; comment puis-je créer un jeu en utilisant Unity et en faisant un usage minimum (ou non) de l'éditeur visuel?
I prefer writing my own level editor which provides only the stuff really neccessary for my game
ok, cela signifie essentiellement que vous ne voulez pas utiliser un moteur de jeu, vous voulez programmer avec une bibliothèque graphique. Cependant, vous avez déjà rencontré un problème technique lorsque vous essayez de le faire, alors ... je sens une contradiction ici.Réponses:
Je suis un débutant complet dans Unity, mais voici comment je le fais en ce moment, et cela réduit l'utilisation de l'éditeur au minimum:
Dans l'éditeur, je n'ai que trois objets: un GameObject vide appelé "principal", une caméra et une lumière. Et c'est uniquement parce que jusqu'à présent je ne travaille qu'avec une seule caméra et une seule lumière, donc c'était plus rapide de cette façon. Plus tard, je les supprimerai probablement, et seul le "principal" restera.
Dans "Assets / MyScripts", j'ai une classe "Main", qui est ajoutée au GameObject "principal" en tant que comportement. Ce qui signifie que lorsque le programme démarre, la classe "Main" est instanciée et sa méthode est appelée. La classe "principale" est comme ceci:
Dans le jeu, je crée dynamiquement l'environnement comme ceci:
Mais c'est parce que jusqu'à présent je ne fais qu'un prototype. Plus tard, je voudrai remplacer les cubes par de belles choses éditées dans Blender. Ce qui nécessitera de les faire dans Blender et de les importer dans les unités en tant que "prefabs". Ensuite, je vais instancier de la même manière les "prefabs" du code C #.
Si vous souhaitez faire réagir un objet aux événements, tels que les collisions avec d'autres objets, vous pouvez instancier l'objet et leur ajouter dynamiquement une classe de comportement, qui est une classe C # dérivée de MonoBehavior. Par exemple, si vous voulez avoir une voiture, vous faites un préfabriqué de voiture et écrivez une classe "CarBehavior" pour son comportement dans le jeu.
De cette façon, vous pouvez réduire l'interaction avec l'éditeur au minimum, mais probablement pas complètement à zéro. Maintenant, cela dépend si c'est une solution acceptable pour vous.
la source
Lorsque vous travaillez avec Unity, vous devez effectuer certains travaux dans l'éditeur d'Unity; c'est simplement ainsi que fonctionne Unity.
Cependant, la grande majorité de ce que vous feriez en tant que programmeur ne se produit pas dans l'éditeur d'Unity; les fichiers de script sont des fichiers texte externes écrits dans un IDE externe, et en tant que programmeur, vous utilisez uniquement l'éditeur d'Unity pour lier les scripts à exécuter, puis appuyer sur Play pour exécuter réellement le jeu. Ce n'est pas différent de lier des classes dans les paramètres du projet, puis d'appuyer sur Exécuter dans votre IDE.
La plupart des autres outils de développement de jeux dotés d'un éditeur visuel central sont également associés à un support de script limité et rigide, mais Unity ne souffre pas de cet inconvénient. Bien que tout ce qui a été créé pour Unity passe finalement par l'éditeur visuel, cette interface principale implique beaucoup de liens entre les projets et le code personnalisé qui s'exécute dans le moteur de jeu d'Unity. Programmeurs expérimentés, ne négligez pas cet environnement de développement, le confondant avec un créateur de jeu avec une capacité de programmation limitée!
(aussi, il semble que le livre que j'écris actuellement serait une excellente ressource pour vous, car il est destiné aux programmeurs expérimentés)
la source
Je crois que ce que vous cherchez, c'est le Futile Framework for Unity.
Fondamentalement, vous pouvez ensuite faire toute votre programmation en utilisant des scripts sans avoir à "glisser-déposer" ou à jouer avec l'éditeur visuel. Tout ce dont vous avez besoin est un seul GameObject dans votre scène qui sera le conteneur de votre jeu entier. Vous faites ensuite tout de manière procédurale comme vous le feriez avec un éditeur non visuel.
Avertissement: Bien que Futile soit très centré sur le code, il est inévitable que vous deviez jouer avec l'éditeur Unity d'une manière ou d'une autre. Mais cela est très réduit avec Futile.
la source
Je voudrais ajouter à toutes les bonnes réponses ici, en particulier la réponse de @jhocking:
Presque tout ce que j'ai trouvé dans Unity a une contrepartie en texte brut dans l'arborescence des dossiers de projets. J'ai directement édité des prefabs et d'autres gameObjects sans ouvrir Unity, et ces changements ont été trouvés avec succès par d'autres développeurs lors de la validation.
Bien que je ne connaissais pas autant le Futile Framework jusqu'à aujourd'hui, cela semble être un moyen vraiment génial de tout faire.
J'utilise actuellement toutes les fonctionnalités de glisser-déposer au lieu de me baser sur des scripts, mais cela devra changer car mon objectif aura des niveaux générés de manière procédurale et des méchants.
Mes deux cents disent essentiellement obtenir les quelques objets dont vous avez besoin dans Unity, puis s'appuyer sur des scripts dans un éditeur externe. Vous pouvez presque tout faire en texte brut.
la source