Ideias e funcionalidades do jogo

A tua próxima funcionalidade

Itens

Equipamento único com propriedades, regras de catálogo e inventário do projeto selecionado.

SDK: developRequer uma sessão de jogador
Unity
Ilustração de Itens
O resultado visível

Depois de guardar, o catálogo contém starter_sword. Após a compra revista, o inventário atual contém o seu instanceId único.

Vídeo em breve

Este passo ainda não tem vídeo. O guia e o pedido MCP já podem ser usados.

Itens

Preparar o mesmo projeto

  1. Seleciona no painel o mesmo projeto que na configuração do teu jogo.

    Itens →
  2. Criem ou reutilizem estas entradas de teste no formulário do painel. São valores de exemplo, não dados atuais.

    Chave
    starter_sword
    Nome
    Quickstart Sword
    Tipo
    equipment
    Raridade
    common
    Ativo
    true
    Propriedades base
    {"damage":5}
    Regras de propriedades
    []

    Os itens têm identidade e propriedades próprias. Recursos contáveis ficam nos Valores do jogador; elementos apenas cosméticos ficam no Perfil do jogador.

    Preparem coins com o guia de valores. Guardem a oferta ativa starter-sword: custo de 10 coins, recompensa de 1 starter_sword.

    Valores do jogador →
  3. Guardem, recarreguem e verifiquem as entradas antes do exemplo. Preservem as restantes definições.

Integra esta funcionalidade

Podes consultar o guia. Para o executar, precisas de uma chave de projeto ativa. Preparar o projeto

SDK instalado, configuração do projeto importada e jogador com sessão iniciada.

Este exemplo do SDK usa develop. Verifica se as API necessárias existem no SDK instalado.

Concluam a ligação do início rápido com o jogador escolhido. Chamem ReadCatalogPage(), ReadInventory() através de um botão ou ação explícita da cena. Abrir o ficheiro não envia pedidos.

C#
Assets/Scripts/ItemsDemo.cs
Chamada ao 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.
Abrir o exemplo SDK completo ↗

Usar o item guardado

Importem o exemplo oficial e os seus auxiliares. Revejam a oferta e executem a sequência com o jogador atual. Aguardem cada passo e confirmem a compra uma vez. Preservem o pedido original após uma resposta incerta.

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

Testa a tua nova funcionalidade.

Depois de guardar, o catálogo contém starter_sword. Após a compra revista, o inventário atual contém o seu instanceId único.

Seleciona no painel o mesmo projeto que na configuração do teu jogo.

Endpoints da API
  • GET/items
  • GET/items/catalog
  • POST/items/adjust
  • POST/items/equip
  • POST/items/discard
Todos os endpoints na referência da API
A nossa sugestão para o próximo passo

Dá uma pontuação máxima a cada partida.

Guarda a pontuação depois de uma partida e mostra quem está à frente. Continua a usar a ligação e a sessão do jogador.