Jakiś czas temu zacząłem pracować z Unity i nadal mam problem z ściśle powiązanymi skryptami. Jak mogę uporządkować kod, aby uniknąć tego problemu?
Na przykład:
Chcę mieć systemy zdrowia i śmierci w osobnych skryptach. Chcę też mieć różne wymienne skrypty chodzenia, które pozwalają mi zmieniać sposób poruszania się postaci gracza (oparte na fizyce, bezwładnościowe elementy sterujące, takie jak w Mario, w porównaniu do ścisłych, drżących elementów sterujących, takich jak w Super Meat Boy). Skrypt zdrowia musi zawierać odniesienie do skryptu śmierci, aby mógł uruchomić metodę Die (), gdy zdrowie graczy osiągnie 0. Skrypt śmierci powinien zawierać odniesienie do użytego skryptu chodzenia, aby wyłączyć chodzenie po śmierci (I mam dość zombie).
Chciałbym normalnie tworzyć interfejsy, jak IWalking
, IHealth
i IDeath
, tak, że można zmienić te elementy na kaprysu bez rozbijania resztę kodu. Powiedzmy, że ustawiłbym je osobnym skryptem na obiekcie odtwarzacza PlayerScriptDependancyInjector
. Może to skrypt musiałby publicznych IWalking
, IHealth
oraz IDeath
atrybuty, tak że zależności może być ustawiona przez projektanta z poziomu inspektora przez przeciąganie i upuszczanie odpowiednich skryptów.
To pozwoliłoby mi po prostu łatwo dodawać zachowania do obiektów gry i nie martwić się o mocno zakodowane zależności.
Problem w jedności
Problemem jest to, że w jedności nie mogę wystawiać interfejsów w inspektora, a jeśli piszę własnych inspektorów, odniesienia przyzwyczajenie się w odcinkach, a to dużo niepotrzebnej pracy. Dlatego pozostało mi pisanie ściśle powiązanego kodu. Mój Death
skrypt ujawnia odniesienie do InertiveWalking
skryptu. Ale jeśli zdecyduję, że chcę, aby postać gracza ściśle kontrolowała, nie mogę po prostu przeciągnąć i upuścić TightWalking
skryptu, muszę go zmienić Death
. To jest do bani. Poradzę sobie z tym, ale moja dusza płacze za każdym razem, gdy robię coś takiego.
Jaka jest preferowana alternatywa dla interfejsów w Unity? Jak rozwiązać ten problem? Znalazłem to , ale mówi mi to, co już wiem, i nie mówi mi, jak to zrobić w Jedności! To również omawia, co należy zrobić, a nie jak, nie rozwiązuje problemu ścisłego łączenia skryptów.
Podsumowując, uważam, że zostały napisane dla osób, które przyszły do Unity z doświadczeniem w projektowaniu gier, które po prostu uczą się kodować, a dla Unity jest bardzo mało zasobów dla zwykłych programistów. Czy istnieje jakiś standardowy sposób na uporządkowanie kodu w Unity, czy też muszę wymyślić własną metodę?
The problem is that in Unity I can't expose interfaces in the inspector
Nie sądzę, że rozumiem, co masz na myśli przez „ujawnienie interfejsu w inspektorze”, ponieważ moją pierwszą myślą było „dlaczego nie?”