Chciałbym napisać grę całkowicie w języku C #. Podczas poszukiwań silnika znalazłem Unity3D, ale wszystkie samouczki i dokumentacja mówią o edytorze wizualnym i IDE Unity, w którym klikasz i wskazujesz, aby tworzyć sceny i skrypty.
Nie chcę tego robić. Wolę pełne pokrycie kodu niż projektantów odciągających ode mnie rzeczy. Chciałbym napisać czysty kod C # od zera lub, w razie potrzeby, skrypty Unity jako dodatek. Nie mogłem znaleźć żadnego wyjaśnienia ani dokumentacji na ten temat; jak mogę zbudować grę za pomocą Unity i minimalnie (lub nie) korzystać z edytora wizualnego?
I prefer writing my own level editor which provides only the stuff really neccessary for my game
ok, to po prostu oznacza, że nie chcesz używać silnika gry, chcesz programować z biblioteką graficzną. Jednak próbując to zrobić, już trafiłeś w kłopoty techniczne, więc ... wyczuwam tutaj sprzeczność.Odpowiedzi:
Jestem kompletnym początkującym w Unity, ale teraz tak to robię i to ogranicza użycie edytora do minimum:
W edytorze mam tylko trzy obiekty: pusty obiekt GameObject o nazwie „main”, aparat fotograficzny i światło. I to tylko dlatego, że do tej pory pracowałem tylko z jednym aparatem i jednym światłem, więc było szybciej. Później prawdopodobnie je usunę i pozostaną tylko „główne”.
W „Assets / MyScripts” mam klasę „Main”, która jest dodawana do „main” GameObject jako zachowanie. Co oznacza, że gdy program się uruchomi, zostanie utworzona instancja klasy „Main” i jej metoda. Klasa „główna” wygląda następująco:
W grze dynamicznie buduję takie środowisko:
Ale dzieje się tak, ponieważ do tej pory robię tylko prototyp. Później będę chciał wymienić kostki na kilka fajnych rzeczy edytowanych w Blenderze. Co będzie wymagało zrobienia ich w Blenderze i zaimportowania ich do Jednostek jako „prefabrykatów”. Następnie podobnie utworzę „prefabrykaty” z kodu C #.
Jeśli chcesz, aby obiekt reagował na zdarzenia, takie jak kolizje z innymi obiektami, możesz utworzyć instancję obiektu i dynamicznie dodać do nich klasę zachowania, która jest klasą C # pochodzącą z MonoBehavior. Na przykład, jeśli chcesz mieć samochód, wykonujesz prefabrykację samochodu i piszesz klasę „CarBehavior” pod kątem jego zachowania w grze.
W ten sposób możesz ograniczyć interakcję z edytorem do minimum, choć prawdopodobnie nie do zera. Teraz zależy to od tego, czy jest to dla Ciebie akceptowalne rozwiązanie.
źródło
Podczas pracy z Unity musisz popracować nad edytorem Unity; tak po prostu działa Unity.
Jednak ogromna większość tego, co robisz jako programista, nie dzieje się w edytorze Unity; pliki skryptów są zewnętrznymi plikami tekstowymi zapisanymi w zewnętrznym środowisku IDE, a jako programista używasz edytora Unity tylko do łączenia skryptów do uruchomienia, a następnie klikania Play w celu uruchomienia gry. Nie inaczej jest w przypadku łączenia w klasach w ustawieniach projektu, a następnie naciśnięcia przycisku Uruchom w swoim IDE.
Większość innych narzędzi do tworzenia gier, które mają centralny edytor wizualny, są również wyposażone w ograniczoną i nieelastyczną obsługę skryptów, ale Unity nie cierpi z tego powodu. Chociaż wszystko, co stworzono dla Unity, ostatecznie przechodzi przez edytor wizualny, ten podstawowy interfejs obejmuje wiele projektów łączących z niestandardowym kodem działającym w silniku gry Unity. Doświadczeni programiści, nie odrzucajcie tego środowiska programistycznego, myląc go z jakimś twórcą gier z możliwością łączenia z ograniczonymi możliwościami programowania!
(wydaje się również, że książka, którą obecnie piszę, byłaby dla Ciebie świetnym źródłem informacji, ponieważ jest skierowana do doświadczonych programistów)
źródło
Wierzę, że szukasz Futile Framework for Unity.
Zasadniczo możesz wtedy programować za pomocą skryptów bez konieczności „przeciągania i upuszczania” rzeczy lub bałaganu za pomocą edytora wizualnego. Wszystko czego potrzebujesz to pojedynczy obiekt GameObject w twojej scenie, który będzie pojemnikiem na całą grę. Następnie wykonujesz wszystko proceduralnie, tak jak w edytorze niewizualnym.
Oświadczenie: Chociaż Futile jest bardzo zorientowany na kod, nieuniknione jest, że będziesz musiał w jakiś sposób zadzierać z edytorem Unity. Ale w Futile jest to znacznie zmniejszone.
źródło
Chciałbym dodać tutaj wszystkie dobre odpowiedzi, szczególnie odpowiedź @jhockinga:
Prawie wszystko, co znalazłem w Unity, ma zwykły tekst w drzewie folderów projektów. Bezpośrednio edytowałem prefabrykaty i inne obiekty GameOf bez otwierania Unity, a zmiany te zostały pomyślnie znalezione przez innych deweloperów po zatwierdzeniu.
Chociaż do dzisiaj nie wiedziałem aż tyle o Futile Framework, wydaje się, że jest to naprawdę świetny sposób na uzyskanie dostępu do wszystkiego.
Obecnie używam wszystkich funkcji przeciągania i upuszczania zamiast bazowania na skryptach, ale to będzie musiało się zmienić, ponieważ moim celem będą generowane proceduralnie poziomy i źli.
Moje dwa centy mówią, że w zasadzie pobierz kilka obiektów, których potrzebujesz w Unity, a następnie polegaj na skryptach w zewnętrznym edytorze. Możesz zrobić prawie wszystko zwykłym tekstem.
źródło