Cách đây một thời gian, tôi bắt đầu làm việc với Unity và tôi vẫn phải vật lộn với vấn đề kịch bản được kết hợp chặt chẽ. Làm thế nào tôi có thể cấu trúc mã của mình để tránh vấn đề này?
Ví dụ:
Tôi muốn có hệ thống sức khỏe và cái chết trong các kịch bản riêng biệt. Tôi cũng muốn có các kịch bản đi bộ có thể hoán đổi cho nhau để cho phép tôi thay đổi cách di chuyển nhân vật người chơi (dựa trên vật lý, điều khiển quán tính như trong Mario so với điều khiển chặt chẽ, co giật như trong Super Meat Boy). Tập lệnh Health cần giữ một tham chiếu đến tập lệnh Death, để nó có thể kích hoạt phương thức Die () khi sức khỏe của người chơi đạt đến 0. Tập lệnh Death nên giữ một số tham chiếu đến tập lệnh đi bộ được sử dụng, để vô hiệu hóa việc đi bộ trên cái chết (I Mệt mỏi vì thây ma).
Tôi thường sẽ tạo các giao diện, như IWalking
, IHealth
và IDeath
, để tôi có thể thay đổi các yếu tố này một cách nhanh chóng mà không phá vỡ phần còn lại của mã. Tôi sẽ có chúng được thiết lập bởi một tập lệnh riêng biệt trên đối tượng người chơi, nói PlayerScriptDependancyInjector
. Có lẽ đó là kịch bản sẽ có công IWalking
, IHealth
và IDeath
các thuộc tính, do đó phụ thuộc có thể được thiết lập bởi các nhà thiết kế trình độ từ thanh tra bằng cách kéo và thả các kịch bản thích hợp.
Điều đó sẽ cho phép tôi đơn giản thêm các hành vi vào các đối tượng trò chơi một cách dễ dàng và không lo lắng về các phụ thuộc được mã hóa cứng.
Vấn đề trong Unity
Các vấn đề là trong Unity Tôi không thể tiếp xúc với giao diện trong thanh tra, và nếu tôi viết Thanh tra của riêng tôi, các tài liệu tham khảo wont được đăng, và đó là rất nhiều công việc không cần thiết. Đó là lý do tại sao tôi còn lại với việc viết mã kết hợp chặt chẽ. Death
Kịch bản của tôi hiển thị một tham chiếu đến một InertiveWalking
kịch bản. Nhưng nếu tôi quyết định tôi muốn nhân vật người chơi kiểm soát chặt chẽ, tôi không thể kéo và thả TightWalking
tập lệnh, tôi cần thay đổi Death
tập lệnh. Đó là hút. Tôi có thể đối phó với nó, nhưng tâm hồn tôi khóc mỗi khi tôi làm điều gì đó như thế này.
Cái gì thay thế ưa thích cho các giao diện trong Unity? Làm sao để giải quyết vấn đề này? Tôi đã tìm thấy cái này , nhưng nó cho tôi biết những gì tôi đã biết, và nó không cho tôi biết làm thế nào để làm điều đó trong Unity! Điều này cũng thảo luận về những gì nên được thực hiện, không phải như thế nào, nó không giải quyết vấn đề khớp nối chặt chẽ giữa các kịch bản.
Nói chung, tôi cảm thấy những thứ đó được viết cho những người đến với Unity với nền tảng thiết kế trò chơi, những người chỉ học cách viết mã và có rất ít tài nguyên về Unity cho các nhà phát triển thông thường. Có cách nào chuẩn để cấu trúc mã của bạn trong Unity không, hay tôi phải tìm ra phương pháp của riêng mình?
The problem is that in Unity I can't expose interfaces in the inspector
Tôi không nghĩ tôi hiểu ý của bạn khi "phơi bày giao diện trong thanh tra" bởi vì suy nghĩ đầu tiên của tôi là "tại sao không?"