Oyun fikirleri ve özellikleri

Sıradaki özelliğin

Öğeler

Seçili proje için özellikli benzersiz ekipman, katalog kuralları ve oyuncu envanteri.

SDK: developOyuncu oturumu gerekli
Unity
Öğeler görseli
Görünür sonuç

Kayıttan sonra katalog starter_sword içerir. İncelenen örnek satın alımdan sonra güncel envanterde benzersiz instanceId bulunur.

Video yakında

Bu adımın videosu henüz yok. Rehber ve MCP isteği kullanıma hazır.

Öğeler

Aynı projeyi hazırlayın

  1. Panelde oyun yapılandırmandaki projeyle aynı projeyi seç.

    Öğeler →
  2. Bu test kayıtlarını panel formunda oluşturun veya mevcut olanları kullanın. Bunlar örnek değerlerdir, güncel proje verileri değildir.

    Anahtar
    starter_sword
    Ad
    Quickstart Sword
    Tür
    equipment
    Nadirlik
    common
    Etkin
    true
    Temel özellikler
    {"damage":5}
    Özellik kuralları
    []

    Öğelerin kendilerine ait kimliği ve özellikleri vardır. Sayılabilir kaynaklar Oyuncu Değerlerinde, yalnızca görsel kozmetikler Oyuncu Profilinde kalır.

    Oyuncu değerleri kılavuzuyla coins hazırlayın. Etkin starter-sword teklifini kaydedin: maliyet 10 coins, eşya ödülü 1 starter_sword.

    Oyuncu değerleri →
  3. Örneği çalıştırmadan önce kaydedin, yeniden yükleyin ve doğrulayın. Diğer tanımları koruyun.

Bu özelliği ekle

Kılavuzu inceleyebilirsin. Çalıştırmak için etkin bir proje anahtarı gerekir. Projeyi hazırla

SDK kurulu, proje yapılandırması içe aktarılmış ve oyuncu oturum açmış olmalı.

Bu SDK örneği develop kullanır. Gerekli API'lerin kurulu SDK sürümünde bulunduğunu kontrol et.

Hızlı başlangıç bağlantısını ilgili oyuncuyla tamamlayın. ReadCatalogPage(), ReadInventory() çağrısını açık bir düğme veya sahne eyleminden yapın. Dosyayı açmak tek başına istek göndermez.

C#
Assets/Scripts/ItemsDemo.cs
horizOn çağrısı
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.
Tam SDK örneğini aç ↗

Kaydedilen eşyayı kullanın

Resmî örneği ve yardımcı dosyalarını içe aktarın. Teklifi inceleyip aşağıdaki sırayı mevcut oyuncuyla çalıştırın. Her adımı bekleyin ve satın almayı bir kez onaylayın. Belirsiz yanıtta özgün isteği koruyun.

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

Yeni özelliğini test et.

Kayıttan sonra katalog starter_sword içerir. İncelenen örnek satın alımdan sonra güncel envanterde benzersiz instanceId bulunur.

Panelde oyun yapılandırmandaki projeyle aynı projeyi seç.

Uç noktalar
  • GET/items
  • GET/items/catalog
  • POST/items/adjust
  • POST/items/equip
  • POST/items/discard
API referansındaki tüm uç noktalar
Sıradaki adım için önerimiz

Her tura bir yüksek puan ekle.

Turdan sonra puanı kaydet ve kimin önde olduğunu göster. Bağlantını ve oyuncu oturumunu kullanmaya devam et.