Phần sau chưa hoàn thiện (không có kế hoạch hoàn thành) [Unity] Cách làm game chiến thuật theo lượt + Cách tạo kiến trúc game độc đáo, dễ hiểu và tuyệt vời. Đang chứng minh tính mở rộng và khả năng tái sử dụng thông qua việc thêm các tính năng nội dung.
Đây là bài giảng chưa hoàn thiện, các phần sau trong lộ trình học vẫn chưa được thực hiện. Tuy nhiên, nội dung cốt lõi về Prototype và phần nâng cao vẫn được bao gồm. (Chi tiết cụ thể vui lòng xem tại thông báo) ---------------------------------------- Cách hiện thực hóa trò chơi Turn-based Tactics (Chiến thuật theo lượt) Part 1, 2 -> Các tính năng cơ bản, vòng lặp chiến đấu cơ bản (tương ứng với phần khung xương) Vì số lượng asset tôi có thể sử dụng tăng lên và có nhiều nội dung muốn cập nhật thêm, nên các bạn có thể coi đây là khóa học về cách tạo Prototype nhanh. Dựa trên nội dung của hai phần này, bạn cũng có thể suy luận được cách thức hiện thực hóa các nội dung đã và sẽ được cập nhật. ---------------------------------------------------------- Cập nhật -> Nâng cao và làm phong phú thêm dựa trên những gì đã tạo ở Part 1, 2 cf -> Các nội dung hữu ích cho việc phát triển trò chơi thuộc thể loại này + Alpha
41 học viên
Độ khó Trung cấp trở lên
Thời gian Không giới hạn
Cuối cùng, các mục chuyên sâu cũng bắt đầu xuất hiện.
Thiết kế và triển khai cho các trạng thái phản ứng đang được bắt đầu. (Chúng tôi cũng sẽ đề cập đến các nội dung chung chung ở giữa #Nâng cao# <- Chỉ những nội dung được đính kèm vào đây)
Nó sử dụng sự kiện IEnumerator, cho phép bạn thực hiện các thao tác theo thứ tự đã định bất kể khi nào bạn đăng ký sự kiện đó.
(Thực tế, nó giống như những gì chúng ta đã làm trong các lớp trước) Đây là phương pháp sử dụng IEnumerator bổ sung bằng cách nhóm chúng theo mức độ ưu tiên và danh mục, sau đó sắp xếp chúng theo cách Liên tiếp và Song song.
Tuy nhiên, có thể mất một thời gian để làm quen với việc hủy đăng ký sự kiện ngay từ đầu.
Bạn có muốn thử những trạng thái đó không? Nếu chúng được áp dụng, bạn có thể bổ sung rất nhiều chiến lược vào trò chơi chiến thuật mà mình tạo ra.
Những + đó bây giờ bạn sẽ có thể thực hiện và thêm những thứ tương tự đủ,
Thay đổi hệ thống? Nó được thêm vào sau khi phát triển (tôi nghĩ đây là bối cảnh nhất quán).
+Sau khi thực hiện tất cả các bước trên, giờ đây bạn có thể áp dụng sự kiện IEnumerator cho hầu hết các dự án khác một cách thoải mái.
Tôi nghĩ là có thể được.
Phần 1, 2 cũng kiểm soát hoàn hảo thời gian của các sự kiện bằng cách liệt kê các sự kiện (theo thứ tự đăng ký) <- Điều này cũng rất tốt. Và nó rất dễ dàng.
Nhưng ở cấp độ cao hơn, không phụ thuộc vào thứ tự đăng ký mà tự động tiến hành theo thứ tự được xác định trước + cùng các danh mục tại cùng một thời điểm!
🎯 Chức năng Một sự đổi mới thực sự trong hệ thống ưu tiên
📊 Hệ thống cũ so với Hệ thống cải tiến
💡 Cấu trúc và hạn chế của các hệ thống hiện có
Hiện tại: Phương pháp phụ thuộc vào thứ tự đăng ký
csharp
public event Func OnDamageEvent; // 구독하는 순서가 실행 순서를 결정 OnDamageEvent += ProcessDamage; // 1번째 실행 OnDamageEvent += PlayAnimation; // 2번째 실행 OnDamageEvent += CheckDeath; // 3번째 실행 // 실행 yield return this.ConsecutiveAll(OnDamageEvent.GetInvocationList() .Cast >() .Select(handler => handler())); Vấn đề:
Xác định thứ tự thực hiện dựa trên thứ tự đăng ký
Phụ thuộc vào vị trí mã hoặc thứ tự khởi tạo
Khó khăn trong việc kiểm soát trật tự trong các tương tác phức tạp
Thứ tự thực hiện không thể đoán trước trong các đăng ký động
🚀 Đổi mới hệ thống cải tiến
💎 Kiểm soát mức độ ưu tiên dựa trên thuộc tính tùy chỉnh
Đổi mới: Quản lý ưu tiên khai báo
csharp
public event Func OnDamageEvent; // 구독 순서와 무관하게 우선순위로 실행 [EventPriority(1, "Damage")] IEnumerator ProcessDamage() { } [EventPriority(3, "Death")] IEnumerator CheckDeath() { } [EventPriority(2, "Animation")] IEnumerator PlayAnimation() { } // 구독 순서가 바뀌어도 실행 순서는 항상 동일 OnDamageEvent += CheckDeath; // 늦게 구독해도 OnDamageEvent += ProcessDamage; // 1번째 실행 OnDamageEvent += PlayAnimation; // 2번째 실행 // 3번째 실행 🌟 Giá trị thực sự của sự đổi mới này
🎮 Sức mạnh trong các tình huống trò chơi phức tạp
Kịch bản: Chiến đấu với phản ứng dây chuyền
csharp
// 기존 방식: 구독 순서에 민감 OnAttackEvent += ProcessDamage; // 먼저 구독하면 먼저 실행 OnAttackEvent += TriggerCounter; // 반격이 피해보다 늦게 처리 OnAttackEvent += CheckDeath; // 죽음 체크 OnAttackEvent += PlayAnimation; // 애니메이션 // 문제: 초기화 순서나 동적 구독에 따라 실행 순서 변경 가능Cách tiếp cận được cải thiện: Đảm bảo thứ tự rõ ràng với các thuộc tính
csharp
[EventPriority(1, "PreProcess")] IEnumerator CalculateDamage() { } [EventPriority(2, "Damage")] IEnumerator ApplyDamage() { } [EventPriority(2, "Counter")] // 피해와 동시에 반격 IEnumerator TriggerCounter() { } [EventPriority(3, "PostProcess")] IEnumerator CheckDeath() { } [EventPriority(4, "Visual")] IEnumerator PlayAnimation() { } // 언제 구독하든, 어떤 순서로 구독하든 실행 순서 동일💡 Đổi mới trong xử lý song song theo danh mục
Cùng mức độ ưu tiên, các danh mục khác nhau = thực hiện song song




