Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
SDK C++ của Google Play Games
Tóm tắt
Tổ chức
Điểm truy cập chính cho chức năng Dịch vụ trò chơi của Play là lớp GameServices. Các thực thể GameServices được tạo bằng GameServices::Builder. Xem GameServices
Các phương thức truy cập hoặc làm thay đổi trạng thái của toàn bộ phiên GameServices nằm trong chính lớp GameServices.
Các chức năng khác được định hướng thông qua một nhóm trình quản lý theo từng tính năng. Những người quản lý này nhóm các chức năng liên quan lại với nhau; chúng không chứa trạng thái mà người dùng nhìn thấy. Trình quản lý được trả về bằng cách tham chiếu và có quyền kiểm soát toàn thời gian của thực thể GameServices chứa nội dung đó. Do đó, mã ứng dụng không bao giờ được giữ lại tham chiếu của trình quản lý, mà thay vào đó hãy giữ lại thực thể GameServices. Xem phần Người quản lý.
Dữ liệu được trả về thông qua các đối tượng kiểu giá trị không thể thay đổi. Các giá trị này phản ánh chế độ xem nhất quán của dữ liệu cơ bản tại thời điểm thực hiện truy vấn. Vui lòng xem phần Loại giá trị.
Mô hình luồng
Trừ phi có ghi chú khác, tất cả phương thức GameServices và phương thức Manager đều là theo luồng và không đồng bộ, trừ phi có ghi chú khác. Các lệnh này có thể được gọi trên bất kỳ luồng nào mà không cần khoá bên ngoài và sẽ thực thi theo thứ tự nhất quán với thứ tự gọi. Nói chung, các phương thức biến đổi (những phương thức thay đổi trạng thái) sử dụng mô hình cháy và quên. Các phương thức truy cập (những phương thức đọc trạng thái) có hai biến thể chính. Biến thể đầu tiên (có các tên như GetProperty) cung cấp không đồng bộ kết quả cho lệnh gọi lại được cung cấp; biến thể thứ hai (có tên như GetPropertyBlocking) trả về đồng bộ kết quả của chúng cho luồng lệnh gọi. Trình truy cập sẽ thấy kết quả của tất cả các biến đã được gọi trước đó; tuy nhiên, trình truy cập có thể đã hoặc chưa sửa đổi trạng thái Dịch vụ trò chơi từ xa tại một thời điểm nhất định.
Tất cả lệnh gọi lại người dùng (cho dù là lệnh gọi lại một lần được cung cấp dưới dạng đối số cho phương thức truy cập hay lệnh gọi lại nhiều công dụng được định cấu hình tại thời gian xây dựng GameServices) đều được gọi trên một luồng gọi lại chuyên dụng. Luồng này có thể khác với bất kỳ khái niệm nền tảng nào của "luồng chính" hoặc "luồng giao diện người dùng". Lệnh gọi lại của người dùng phải thực thi nhanh chóng, vì chuỗi lệnh gọi lại bị trì hoãn có thể gây ra các vấn đề mà người dùng có thể nhìn thấy (ví dụ: chậm hoàn tất yêu cầu đăng xuất).
Các thuộc tính trên loại giá trị không thể thay đổi có sẵn một cách đồng bộ và không có quy tắc chặn.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Google Play Games C++ SDK\n=========================\n\nSummary\n-------\n\nOrganization\n\nThe main entry point for Play Game Services functionality is the GameServices class. GameServices instances are created with GameServices::Builder. See [GameServices](/games/services/cpp/api/other/classgpg_1_1GameServices)\n\nMethods that access or mutate the state of the entire GameServices session live in the GameServices class itself.\n\nOther functionality is indirected through a set of per-feature managers. These managers group related functionality together; they contain no user-visible state themselves. Managers are returned by reference, and have lifetime controlled by the containing GameServices instance. As such, client code should never hold onto a manager reference, but instead hold on to the GameServices instance. See [Managers](/games/services/cpp/api/other/group__Managers).\n\nData is returned via immutable value type objects. These values reflect a consistent view of the underlying data at the point in time the query was made. See [Value Types](/games/services/cpp/api/other/group__ValueType).\n\nThreading Model\n\nUnless otherwise noted, all GameServices methods and Manager methods are threadsafe and asynchronous. They can be called on any thread without external locking, and will execute in an order consistent with their invocation order. In general, mutator methods (those that change state) use a fire-and-forget model. Accessor methods (those that read state) come in two major variants. The first variant (with names like GetProperty) asynchronously supply their results to a provided callback; the second variant (with names like GetPropertyBlocking) synchronously return their results to the calling thread. Accessors see the results of all mutators that have been called prior; however, the mutator may or may not have modified the remote Game Services state at any given time.\n\nAll user callbacks (whether one-shot callbacks supplied as arguments to accessor methods, or multi-use callbacks configured at GameServices build time) are invoked on a dedicated callback thread. This thread is potentially distinct from any platform concept of a \"main thread\" or \"UI thread\". User callbacks should execute quickly, as a stalled callback thread can cause user-visible issues (for example, delayed completion of a sign-out request).\n\nProperties on immutable value types are available synchronously and without blocking."]]