Ide dan fitur game

Fitur berikutnya

Item

Perlengkapan unik dengan properti, aturan katalog, dan inventaris pemain untuk proyek terpilih.

SDK: developMemerlukan sesi pemain
Unity
Ilustrasi Item
Hasil yang terlihat

Setelah disimpan, katalog memuat starter_sword. Setelah pembelian contoh yang ditinjau, inventaris saat ini memuat instanceId uniknya.

Video akan tersedia

Langkah ini belum memiliki video. Panduan dan permintaan MCP sudah dapat digunakan.

Item

Siapkan proyek yang sama

  1. Pilih proyek yang sama di dasbor dan konfigurasi game.

    Item →
  2. Buat atau gunakan kembali entri uji ini pada formulir dasbor. Nilai ini adalah contoh, bukan data proyek saat ini.

    Kunci
    starter_sword
    Nama
    Quickstart Sword
    Jenis
    equipment
    Kelangkaan
    common
    Aktif
    true
    Properti dasar
    {"damage":5}
    Aturan properti
    []

    Item memiliki identitas dan properti sendiri. Sumber daya yang dihitung tetap berada di Nilai Pemain; kosmetik visual tetap di Profil Pemain.

    Siapkan coins melalui panduan nilai pemain. Simpan penawaran aktif starter-sword: biaya 10 coins, hadiah item 1 starter_sword.

    Nilai pemain →
  3. Simpan, muat ulang, dan periksa entri sebelum menjalankan contoh. Pertahankan definisi lain.

Tambahkan fitur ini

Kamu dapat membaca panduan. Untuk menjalankannya, diperlukan kunci proyek aktif. Siapkan proyek

SDK terpasang, konfigurasi proyek diimpor, dan pemain sudah masuk.

Contoh SDK ini menggunakan develop. Periksa apakah API yang diperlukan tersedia di SDK yang terpasang.

Selesaikan koneksi mulai cepat dengan pemain yang dipilih. Panggil ReadCatalogPage(), ReadInventory() dari tombol atau tindakan adegan yang eksplisit. Membuka berkas saja tidak mengirim permintaan.

C#
Assets/Scripts/ItemsDemo.cs
Panggilan horizOn
1using UnityEngine;
2using PM.horizOn.Cloud.Manager;
3​
4public sealed class ItemsDemo : MonoBehaviour
5{
6 // Initialize/connect and restore the existing player in the Quickstart first.
7 public async void ReadInventory()
8 {
9 var user = UserManager.Instance.CurrentUser;
10 if (user == null || !user.IsValid()) return;
11 var result = await ItemsManager.Instance.GetInventory(user.UserId);
12 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
13 foreach (var item in result.Data.instances)
14 Debug.Log($"{item.instanceId}: {item.itemKey}");
15 // Keep result.Data.revision for a separately reviewed mutation.
16 }
17​
18 // Wire a separate explicit action; no automatic catalog traversal or poll.
19 public async void ReadCatalogPage()
20 {
21 var user = UserManager.Instance.CurrentUser;
22 if (user == null || !user.IsValid()) return;
23 var result = await ItemsManager.Instance.GetCatalog(user.UserId, limit: 1);
24 if (!result.IsSuccess) { Debug.LogWarning(result.ErrorCode); return; }
25 Debug.Log($"Catalog revision: {result.Data.revision}");
26 // Explicit Next keeps result.Data.revision and nextAfterKey unchanged.
27 }
28}
29// SDK ItemsExample/ItemsSampleStore persist original instanceId/body/revision before writes.
30// Keep the original Player Values operationId for purchase recovery.
31// The initial success may include item references; retained replay may return empty applied/items.
32// Read the current inventory separately. Never reconstruct earlier item references.
33// A failed refresh never authorizes a replacement purchase or a local item grant.
Buka contoh SDK lengkap ↗

Gunakan item tersimpan

Impor contoh resmi beserta berkas bantunya. Tinjau penawaran lalu jalankan urutan berikut dengan pemain saat ini. Tunggu setiap langkah dan konfirmasikan pembelian sekali. Pertahankan permintaan asli jika respons tidak pasti.

ItemsExample: projectId → ReadOneCatalogPage() → ReviewOffers() → SavePurchaseAfterReview("starter-sword") → RefreshInventory()

Uji fitur barumu.

Setelah disimpan, katalog memuat starter_sword. Setelah pembelian contoh yang ditinjau, inventaris saat ini memuat instanceId uniknya.

Pilih proyek yang sama di dasbor dan konfigurasi game.

Titik akhir
  • GET/items
  • GET/items/catalog
  • POST/items/adjust
  • POST/items/equip
  • POST/items/discard
Semua titik akhir di referensi API
Saran kami untuk langkah berikutnya

Berikan skor tertinggi untuk setiap ronde.

Simpan skor setelah ronde dan tampilkan siapa yang unggul. Tetap gunakan koneksi dan sesi pemainmu.