Công cụ của tôi sử dụng một hệ thống thực thể dựa trên thành phần bên trong và tôi muốn liên kết nó với Lua để viết kịch bản.
Bây giờ, tôi muốn lưu những người viết kịch bản cho nó gõ công việc. Trong C ++, để đặt vị trí của một thực thể, bạn sẽ làm như sau:
pEntity->GetComponent< CPoint >()->SetPos( Vector( X, Y ) );
Điều đó có nghĩa là, nếu tôi liên kết nó với Lua 1: 1, bạn cũng phải:
ent:GetComponent( CP_POINT ):SetPos( 123, 456 )
Nhưng hãy trung thực, bạn có muốn gõ thật nhiều chỉ để đặt vị trí của một thực thể không?
Tôi không nghĩ vậy, đó là lý do tại sao tôi "giấu" hệ thống thành phần từ Lua:
Ngay bây giờ, những gì bạn làm là
ent:SetPos( 123, 456 )
Các công cụ thành phần được xử lý nội bộ. Bạn vẫn có thể tự thêm và xóa các thành phần khỏi Lua bằng ent: AddComponent và ent: RemoveComponent, v.v.
Bây giờ, điều này cũng không hoàn hảo:
Các thực thể có thể thay đổi được lộn xộn vì nó phải đảm nhận tất cả các chức năng của tất cả các thành phần
Vấn đề đặt tên:
ent:SetJointMotorEnabled()
một lần nữa có vẻ xấu
Bạn có biết làm thế nào tôi có thể tìm thấy một sơ đồ đặt tên tốt hơn cho các chức năng thành phần, mà không mạo hiểm sự thoải mái của kịch bản không?
ent:"Point":SetPos(...)
.. gần như là phương pháp đầu tiên một lần nữa. Có thể sử dụng phương pháp thứ hai cho các thành phần phổ biến?