Tìm hiểu trò chơi EzySmashers - Phần 4: Tìm hiểu cấu trúc dự án Unity
Back To BlogsTrong bài này chúng ta sẽ cùng nhau:
- Tìm hiểu cấu trúc thư mục dự án Unity.
- Tìm hiểu cấu trúc thư mục Scene.
- Tìm hiểu cấu trúc thư mục Scripts.
Chuẩn bị
Để có thể bắt đầu tìm hiểu, chúng ta sẽ cần mở dự án EzySmashers bằng Unity editor, nếu bạn vẫn chưa biết cách mở thể nào, bạn có thể tham khảo bài viết trước nhé.
Tìm hiểu cấu trúc thư mục dự án Unity
Dưới đây là giao diện khi các bạn mở thư mục EzySmasher bằng unity, các bạn có thể nhìn xuống phía dưới Project
là các thư mục chứa tài nguyên game của bạn.
Và sau đây là cấu trúc của thư mục.
StreamingAssets
Thư mục này chứa tập tin config.json
, bạn hoàn toàn có thể chỉnh sửa tập tin cấu hình này. Trong tập tin này các bạn hoàn toàn có thể sửa một số thông tin cấu hình như đường dẫn web, socket, autoLogin hay logger,...
Thư mục này chứa mẫu được thiết kế riêng cho trò chơi web dựa trên ezyplatform ví dụ như logo, background,...
youngmonkeys/ezysmashersĐây là thư mục cha, chứa các thư mục con như:
- _Project: Đây là thư mục quan trọng của dự án, nó chứa các tài nguyên và mã nguồn của dự án.
- Extensions: Chứa phần mở rộng cho dự án Unity, cụ thể trong thư mục này sẽ chứa mã nguồn của thư viện ezyfox-server-csharp-client.
- JsonDotNet: Đây là thư viện
JsonDotNet (Newtonsoft.Json)
để làm việc với Json trong Unity. - TextMesh Pro: Đây là thư mục của thư viện
TextMesh Pro
hỗ trợ hiển thị văn bản chất lượng cao.
Như đã nói ở trên đây là thư mục rất quan trọng và bạn sẽ làm việc hầu hết thời gian với thư mục này, nó có chứa các thự mục con sau:
- Resources: chứa tài nguyên của game, ví dụ như là: animators, images, textures, etc
- Actions: Chứa các hoạt động của nhân vật ví dụ như di chuyển,...
- Prefabs: Chứa các đối tượng được sử dụng lại trong game ví dụ như nhân vật, vũ khí hay các đồ vật loot ở trong game,...
- Scenes: Chứa các cảnh game, ví dụ như cảnh loading trước khi vào game, cảnh login, cảnh sảnh trò chơi, cảnh phòng chờ trò chơi,...
- ScriptableObjects: chứa các đối tượng có thể lập trình được biểu diễn các sự kiện UI.
- Scripts: Chứa các tập lệnh C
, phần này sẽ được mô tả kỹ hơn trong mục 3.
Tìm hiểu cấu trúc thư mục Scene
Như các bạn thấy, thư mục Scene
có chứa các scene sau:
- PreLoaderScene: Tải cấu hình trò chơi, khởi tạo một số singleton phổ biến được sử dụng trên tất cả các cảnh, và bạn sẽ sử dụng scene này đầu tiên.
- LoginScene: Bao gồm giao diện người dùng/chức năng đăng nhập của người dùng.
- ForgotPasswordScene: Bao gồm UI/chức năng để đặt lại mật khẩu.
- LobbyScene: Hiển thị giao diện phòng chờ sau khi người dùng đăng nhập vào game, từ đây người dùng có thể xem được thành tích, bảng xếp hạng, cài đặt, các phòng chơi, vật phẩm và chat.
- GameLoungeScene: Hiển thị thị phòng chơi lúc đang chờ một người mới tham gia để bắt đầu trận đấu.
- Game2DScene: Hiển thị phòng chơi, nơi người chơi có thể chiến đấu với nhau.
Tìm hiểu cấu trúc thư mục Scripts
Thư mục này chứa mã nguồn của dự án, và nó có chứa các thưc mục con (các gói) sau:
- config: Chứa các cấu trúc dữ liệu để biểu diễn những gì có trong
StreamingAssets/config.json
. - constant: Chứa các giá trị hằng số hoặc phép liệt kê được sử dụng trong toàn bộ dự án này.
- controller: Giao tiếp với máy chủ HTTP hoặc máy chủ socket.
- converter: Chuyển đổi giữa các loại đối tượng khác nhau (yêu cầu, mô hình, phản hồi, v.v.).
- event: Chứa các lớp sự kiện trò chơi dựa trên đối tượng có thể lập trình được.
- http: Chứa một lớp đơn lẻ để xử lý các yêu cầu/phản hồi HTTP.
- manager: Chứa các đơn lẻ để quản lý dữ liệu/trạng thái khác nhau của trò chơi.
- model: Chứa các đối tượng truyền dữ liệu được sử dụng trong toàn bộ dự án, thường được quản lý bởi các trình quản lý dữ liệu.
- presenter: Xử lý logic trò chơi, tương tác dữ liệu, kiểm soát cách hiển thị các thành phần.
- request: Chứa các đối tượng biểu diễn các yêu cầu HTTP được gửi đến máy chủ HTTP.
- response: Chứa các đối tượng biểu diễn các phản hồi HTTP/Socket từ máy chủ.
- util: Chứa các lớp tiện ích được sử dụng trong toàn bộ trò chơi.
- view: Chứa các thành phần MonoBehaviour của unity hiển thị các mục/giao diện người dùng/người chơi khác nhau trong trò chơi.
Tổng kết
Nhìn chung các thư mục trong dự án của EzySmashers cũng tương đối cơ bản và gần gũi với các nhà phát triển, chúng mình cũng đã tham khảo rất nhiều dự án khác nhau và từ những dự án thực tế đã triển khai, hy vọng sẽ giúp các bạn dễ dàng tiếp cận mã nguồn của EzySmashers.