# Detetar a plataforma

A `@dcl/sdk/platform` módulo permite que sua scene verifique qual client um player está usando, para que você possa adaptar sua UI, controles e gameplay de acordo. Esta é a maneira recomendada de oferecer uma ótima experiência em todos os clients sem fazer fork da sua scene.

## Funções disponíveis

```ts
import { getPlatform, isMobile, isDesktop, isWeb } from '@dcl/sdk/platform'
```

* **`getPlatform()`** — retorna a plataforma atual como `'mobile' | 'desktop' | 'web' | null`. Retorna `null` até que o explorer tenha reportado sua plataforma de volta para a scene (isso acontece pouco depois que a scene começa).
* **`isMobile()`** — retorna `true` se o player estiver no client mobile.
* **`isDesktop()`** — retorna `true` se o player estiver no client desktop.
* **`isWeb()`** — retorna `true` se o player estiver no client web.

{% hint style="warning" %}
**📔 Nota**: Essas funções leem um valor que é preenchido de forma assíncrona quando a scene inicia. Se você chamá-las no primeiro frame, elas ainda podem retornar `null` / `false`. Para a configuração da UI, o lugar mais seguro para chamá-las é a partir da função `main()` ou de qualquer código que seja executado após o primeiro frame.
{% endhint %}

## Divida sua UI por plataforma

Um padrão comum é configurar uma UI diferente para players mobile e desktop:

```ts
import { isMobile, isDesktop } from '@dcl/sdk/platform'

function setupUI() {
  if (isMobile()) {
    // Botões maiores, layout mais simples para toque
    createMobileUI()
  } else if (isDesktop()) {
    // Layout mais denso, ajustado para teclado e mouse
    createDesktopUI()
  }
}
```

Você também pode usar o mesmo padrão para:

* Mostrar ou ocultar instruções na tela adaptadas a cada método de entrada.
* Substituir elementos clicáveis pequenos por alvos de toque maiores no mobile.
* Desativar bindings de entrada que não estão facilmente disponíveis no mobile (veja [Entrada no mobile](/creator/content-creator-pt/scenes-sdk7/criar-para-mobile/input-on-mobile.md)).

## Verificando o valor bruto da plataforma

Se você precisar lidar com várias plataformas em um único switch, use `getPlatform()`:

```ts
import { getPlatform } from '@dcl/sdk/platform'

const platform = getPlatform()

switch (platform) {
  case 'mobile':
    // comportamento específico para mobile
    break
  case 'desktop':
    // comportamento específico para desktop
    break
  case 'web':
    // comportamento específico para web
    break
  case null:
    // plataforma ainda não conhecida
    break
}
```

## Relacionado

* [área segura para mobile](/creator/content-creator-pt/scenes-sdk7/criar-para-mobile/safe-area.md)
* [Melhores práticas de UI para mobile](/creator/content-creator-pt/scenes-sdk7/criar-para-mobile/ui-best-practices.md)
* [UI no ecrã](/creator/content-creator-pt/scenes-sdk7/ui-2d/onscreen-ui.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.decentraland.org/creator/content-creator-pt/scenes-sdk7/criar-para-mobile/detect-platform.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
