Hệ thống đối thoại Unity2D - Tên, Hình ảnh, và Bố cục sử dụng thẻ Ink
Mục Lục
- Giới thiệu
- Hệ thống hiển thị và quản lý tên NPC, hình ảnh và bố cục đối thoại
- Sử dụng thẻ trong tệp đối thoại ink
- Xử lý tên người nói trong đối thoại
- Thay đổi hình ảnh đối thoại
- Thay đổi bố cục đối thoại
- Ví dụ về đối thoại với thẻ
- Hiển thị mặc định khi không có thẻ
- Tạo file đối thoại có chứa các thẻ
- Xử lý việc chuyển đổi màn hình đối thoại
- Tổng kết
Giới thiệu
Xin chào mọi người, tôi là Trever và trong video này, tôi sẽ chỉ cho bạn cách hiển thị và quản lý tên nhân vật NPC, hình ảnh và bố cục đối thoại một cách đơn giản và hiệu quả. Sử dụng hệ thống được xây dựng trong Unity và sử dụng ink. Đến cuối video này, chúng ta sẽ đã xây dựng được một hệ thống giúp thay đổi tên và hình ảnh cho mỗi dòng đối thoại một cách dễ dàng và chúng ta cũng có thể thay đổi bố cục của bảng đối thoại.
Video này là một phần tiếp theo của video trước đó mà tôi đã thực hiện, trong đó chúng ta đã xây dựng một hệ thống đối thoại với các lựa chọn. Bạn không cần phải xem video đó để hiểu video này, nhưng tôi khuyên bạn nên xem video đó trước và sau đó quay lại video này nếu bạn mới bắt đầu với việc xây dựng hệ thống đối thoại.
Ở phần video này, chúng ta sẽ sử dụng ink để viết đối thoại, đóng một vai trò khá quan trọng trong cách chúng ta quản lý tên nhân vật NPC, hình ảnh và bố cục. Tôi sẽ không đi vào chi tiết cú pháp ink trong video này, nhưng chúng ta sẽ giữ mọi thứ đơn giản. Nếu bạn quan tâm đến viết đối thoại với ink, tôi đã có một video hoàn chỉnh về nó sẽ được liên kết trong phần mô tả của video này.
Và đương nhiên, mã nguồn cho tất cả những gì chúng ta sẽ làm trong video này có thể được tìm thấy trên GitHub, cũng sẽ có liên kết trong phần mô tả của video.
Với tất cả những điều đó, hãy xem cách chúng ta sẽ thực hiện điều này trong các tệp đối thoại ink của chúng tôi.
Hệ thống hiển thị và quản lý tên NPC, hình ảnh và bố cục đối thoại
Chúng ta có thể sử dụng thẻ để thêm siêu dữ liệu vào bất kỳ dòng đối thoại nào. Mỗi thẻ chỉ là một chuỗi được đọc vào Unity dưới dạng chuỗi. Vì vậy, chúng ta hoàn toàn có thể tùy chỉnh cách chúng ta muốn xây dựng chúng. Một cách tốt là thiết lập thẻ và các cặp khóa-giá trị, trong đó khóa đại diện cho một hành động chúng ta muốn thực hiện trong mã C# cho dòng đối thoại đó, và giá trị đại diện cho dữ liệu được sử dụng cho hành động đó.
Ví dụ, ký hiệu thẻ cho người nói là "speaker" là khóa và "Bob" là giá trị, được phân tách bằng dấu hai chấm. Chúng ta có thể đọc thẻ này vào Unity dưới dạng chuỗi, sau đó phân tích nó thành cặp khóa-giá trị và sau đó thực hiện hành động cho khóa đó bằng cách sử dụng giá trị. Và chính xác đó chính là những gì chúng ta sẽ làm để đặt tên hiển thị của bảng đối thoại.
Tương tự như vậy, chúng ta cũng sẽ sử dụng các thẻ để đặt hình ảnh và bố cục của bảng đối thoại. Trong trường hợp này, các giá trị sẽ tương ứng với tên trạng thái hoạt hình mà chúng ta sẽ thiết lập trong Unity. Sau đó, khi chúng ta đọc thẻ đó, chúng ta có thể phát công cụ đó, điều sẽ thay đổi hình ảnh hoặc bố cục tương ứng.
Vì vậy, để tóm tắt, khi chúng ta nhận được một thẻ với khóa "speaker", chúng ta sẽ đặt văn bản tên hiển thị trong bảng đối thoại bằng giá trị của thẻ. Và khi chúng ta nhận được một thẻ với khóa "portrait" hoặc "layout", chúng ta sẽ phát một hoạt hình thay đổi hình ảnh hoặc bố cục.
Tất nhiên, chúng ta chỉ cần sử dụng các thẻ này trong các tệp đối thoại ink khi chúng ta muốn kích hoạt một thay đổi, vì vậy chúng ta không cần phải thêm thẻ cho mỗi dòng đối thoại. Vâng, bây giờ hãy xem cách chúng ta sẽ làm điều này trong các tệp đối thoại ink của chúng tôi.