Một cách nhanh chóng để có được các cặp khóa-giá trị trong trình kiểm tra của Unity là xác định lớp mục nhập tuần tự hóa, sau đó sử dụng một mảng hoặc Danh sách <> của chúng. ví dụ...
public class SpellAnimationMap : ScriptableObject
{
[System.Serializable]
public class SpellAnimationEntry
{
public Spell spell;
public AnimationClip animation;
}
public SpellAnimationEntry[] spellAnimations;
}
Tự động, điều này sẽ cung cấp cho bạn một danh sách có thể thay đổi trong thanh tra, nơi bạn có thể nhập khóa và giá trị, mà không cần phải viết một thanh tra tùy chỉnh.
Kết quả trông như thế này:
(Một mẹo: nếu lớp mục nhập được tuần tự hóa chứa trường "Tên", chuỗi đó sẽ được hiển thị thay vì tiêu đề "Phần tử 0" nhạt nhẽo. Hữu ích nếu bạn có dữ liệu phức tạp hơn mà bạn muốn có thể điều hướng hiệu quả.)
Biến điều này thành ScriptableObject cho phép bạn coi nó như một Tài sản được chia sẻ giữa các loại thực thể / trường hợp cần cùng một bộ hoạt hình, tránh chi phí trùng lặp danh sách cho mỗi loại. (Các lớp khác có xu hướng được tuần tự hóa theo từng thể hiện trong Unity). Để đi theo tuyến đường này, bạn sẽ cần thêm một tập lệnh biên tập nhỏ để cho phép bạn tạo các phiên bản này trong thư mục Tài sản của mình .
Chỉnh sửa: bây giờ thậm chí còn dễ dàng hơn - bạn chỉ có thể thêm thuộc tính này phía trên ScriptableObject:
[CreateAssetMenu(fileName = "fileName.asset", menuName = "Some Folder/Menu Label")]
Điều này đặt ScriptableObject vào menu Tạo của bạn, như vậy:
Bạn có thể tùy ý đặt mảng riêng tư và tuần tự hóa để nó vẫn hiển thị trong thanh tra, nhưng thêm Từ điển công cộng (hoặc từ điển riêng với phương thức GetAnimation (chính tả) công khai) để khách hàng sử dụng để tra cứu hiệu quả hơn. Trong phương thức OnEnable () của nó, SpellAnimationMap có thể lặp qua mảng dân số thanh tra để xây dựng từ điển này một lần nữa, chia sẻ lợi ích giữa tất cả các trường hợp máy khách. (Lưu ý rằng OnEnable () cũng được gọi trong trình chỉnh sửa khi nội dung được tạo lần đầu tiên, vì vậy hãy chắc chắn kiểm tra xem mảng của bạn có phải là null trước khi bạn cố đọc nó không)
Cuối cùng, bạn có thể thêm bao nhiêu vào kiểu dữ liệu mục nhập này khi bạn cần. Nó cũng có thể bao gồm prefab, hoặc bất kỳ số bit dữ liệu nào khác mà bạn muốn liên kết với khóa chính tả.
Bạn cũng có thể viết các thanh tra tùy chỉnh để điền trực tiếp các trường Từ điển <,>, nhưng ấn tượng mà tôi nhận được là nó rất khó để hoạt động trơn tru.