Funciones obsoletas
Funciones heredadas
Las siguientes funciones son todas heredadas y deben evitarse. Aún funcionan, pero en el futuro podrían dejar de ser compatibles. Todos estos ejemplos incluyen enlaces a formas alternativas de obtener la misma información o lograr los mismos resultados.
Jugador entra o sale de la escena
📔 Nota: El onEnterSceneObservable y onLeaveSceneObservable los eventos están obsoletos en SDK 7.x. Usa onEnterScene en su lugar, ver Jugador entra o sale de la escena.
Siempre que un avatar entre o salga de los parceles de tierra que componen tu escena, o se teletransporte dentro o fuera, esto crea un evento al que puedes suscribirte. Este evento es activado por todos los avatares, incluido el del jugador.
import {
onEnterSceneObservable,
onLeaveSceneObservable,
} from '@dcl/sdk/observables'
onEnterSceneObservable.add((player) => {
console.log('player entered scene: ', player.userId)
})
onLeaveSceneObservable.add((player) => {
console.log('player left scene: ', player.userId)
})📔 Nota: Este evento solo responde a los jugadores que se están renderizando localmente actualmente. En escenas grandes donde el tamaño de la escena excede el rango visual, los jugadores que entren en la esquina opuesta pueden no registrarse. Si el número de jugadores en la región excede las capacidades de una isla en los servidores de Decentraland, los jugadores que no comparten la misma isla no son visibles y tampoco son rastreados por estos eventos.
Los observables onEnterScene y onLeaveScene importado desde '@dcl/sdk/observables' también están obsoletos. Las funciones correctas tienen el mismo nombre, pero se importan desde '@dcl/sdk/src/players' en su lugar. En el ejemplo a continuación puedes ver ambas variaciones, primero la versión obsoleta y luego la correcta.
// DEPRECATED - imported from observables
import { onEnterScene, onLeaveScene } from '@dcl/sdk/observables'
onEnterScene.add((player) => {
console.log('player entered scene: ', player.userId)
})
onLeaveScene.add((player) => {
console.log('player left scene: ', player.userId)
})
// CURRENT - imported as a player function
import { onEnterScene, onLeaveScene } from '@dcl/sdk/src/players'
export function main() {
onEnterScene((player) => {
if (!player) return
console.log('ENTERED SCENE', player)
})
onLeaveScene((userId) => {
if (!userId) return
console.log('LEFT SCENE', userId)
})
}Jugador se conecta o desconecta
📔 Nota: El getConnectedPlayers función y el onPlayerConnectedObservable y onPlayerDisconnectedObservable los eventos están obsoletos en SDK 7.x. Usa onEnterScene en su lugar, ver Jugador entra o sale de la escena. Cada escena ahora es una isla de comunicaciones distinta, por lo que es lo mismo estar conectado o estar en la misma escena.
Obtén la lista completa de jugadores actualmente conectados desde getConnectedPlayers.
Siempre que otro jugador empiece o deje de ser renderizado por el motor local, esto crea un evento al que puedes suscribir. Los jugadores pueden o no estar en la misma escena que tú, pero deben estar dentro del rango visual (no necesariamente a la vista). El onPlayerConnectedObservable detecta tanto cuando un jugador se conecta cercano por primera vez como cuando se acerca lo suficiente para estar en el rango visual, de igual forma el onPlayerDisconnectedObservable detecta cuando un jugador termina su sesión o se aleja mucho.
Ten en cuenta que si otros jugadores ya se están renderizando en los alrededores antes de que el jugador haya cargado tu escena, este evento no notificará a la escena recién cargada sobre los jugadores ya existentes. Si necesitas llevar un seguimiento de todos los jugadores actuales, puedes consultar los jugadores existentes al cargar la escena y luego escuchar este evento para actualizaciones.
Consultar todos los jugadores en la escena
📔 Nota: El getPlayersInScene la función está obsoleta en SDK 7.x. En su lugar, itera sobre todos los jugadores con un PlayerIdentityData componente. Ver Obtener todos los jugadores.
También puedes obtener la lista completa de jugadores que están actualmente en tu escena y siendo renderizados llamando a getPlayersInScene().
Jugador reproduce animación
📔 Nota: El onPlayerExpressionObservable el evento está obsoleto en SDK 7.x. Usa el AvatarEmoteCommand componente en su lugar, ver Jugador reproduce animación.
Siempre que el jugador reproduzca un emote (bailar, aplaudir, saludar, etc.), puedes detectar este evento.
El evento incluye la siguiente información:
expressionId: Nombre del emote realizado (p. ej.: wave, clap, kiss)
📔 Nota: Este evento se dispara cada vez que el jugador realiza un emote y la escena está cargada. El jugador podría estar en una escena cercana cuando esto ocurra.
Jugador cambia el perfil
📔 Nota: El onProfileChanged el evento está obsoleto en SDK 7.x. Usa el AvatarEquippedData componente en su lugar, ver Jugador cambia el perfil.
Siempre que el jugador haga un cambio en su perfil, se llama al evento onProfileChanged . Estos cambios pueden incluir ponerse wearables distintos, cambiar el nombre, la descripción, activar experiencias portátiles, etc.
Los datos del evento incluyen solo el ID del jugador y un número de versión para el perfil de ese avatar, según el servidor catalyst. Cada vez que se propaga un cambio, el número de versión aumenta en 1.
Cuando se activa este evento, puedes usar la función getUserData() para obtener la versión más reciente de esta información, incluida la lista de wearables que el jugador tiene puestos. Puede que necesites añadir un pequeño retraso antes de llamar a getUserData() para asegurarte de que la versión que devuelve esta función esté actualizada.
📔 Nota: Este evento solo lo provoca cambios en el jugador actual, no cambios en los perfiles de otros jugadores cercanos.
Escena terminó de cargar
📔 Nota: El onSceneReadyObservable el evento está obsoleto desde SDK v7.x. Esta función ya no es relevante. Puedes asegurarte de que algo se ejecute después de que la escena termine de cargarse ejecutándolo dentro de la función Main() . Ver Ciclo de vida de la escena
Cuando la escena termina de cargarse, se llama a onSceneReadyObservable . Esto funciona tanto si el jugador carga directamente en la escena como si el jugador se acerca a la escena desde otro lugar. Cuando todo el contenido de la escena ha terminado su carga inicial, incluidos modelos pesados, etc., se llama a este evento.
Métodos de datos de jugador obsoletos
📔 Nota: El getUserData() y getPlayerData() las funciones están obsoletas desde SDK v7.4.x. Usa getPlayer() en su lugar. Ver Datos de usuario.
Para obtener información del jugador actual que está ejecutando la escena, usa getUserData().
El ejemplo de abajo importa el namespace ~system/UserIdentity y ejecuta getUserData().
Puedes obtener datos de otros jugadores que estén cerca llamando a getPlayerData(), pasando el id de una cuenta de Decentraland.
Ambos getUserData() y getPlayerData() devuelven la misma estructura de datos disponible a través de la content API. Ver Datos de cualquier jugador
getPlayerData() solo pueden obtener datos de jugadores que estén actualmente cerca. No tienen que estar necesariamente en la misma escena, pero sí en rango visual, porque esta información se obtiene del motor local que está renderizando estos avatares. Para probar esto en preview, abre una segunda pestaña e inicia sesión con una cuenta diferente.
📔 Nota: Los IDs de usuario siempre deben estar en minúsculas. Si copias una dirección de billetera, asegúrate de que todos los caracteres estén en minúsculas.
El getUserPublicKey() y getUserAccount() las funciones también están obsoletas. Por favor usa getPlayer() en su lugar. Ver Datos de usuario.
Obtener skybox time
📔 Nota: El getDecentralandTime() la función está obsoleta desde SDK v7.x.x. Usa getWorldTime() en su lugar. Ver Obtener la hora de Decentraland.
Obtener realm
📔 Nota: El getCurrentRealm() la función está obsoleta desde SDK v7.x.x. Usa getRealm() en su lugar. Ver Obtener datos del Realm.
Es modo preview
📔 Nota: El isPreviewMode() la función está obsoleta desde SDK v7.x.x. Usa getRealm() en su lugar, que contiene una preview propiedad. Ver Obtener datos del Realm.
Jugador hace clic en otro jugador
Siempre que el jugador haga clic en otro jugador, puedes detectar un evento.
📔 Nota: El onPlayerClickedObservable el evento está obsoleto desde SDK v7.x. Las versiones futuras permitirán un enfoque más orientado a datos, basado en consultar regularmente datos en lugar de eventos.
Como alternativa, puedes adjuntar un collider invisible al jugador y detectar clics contra este.
📔 Nota: Tanto el jugador que realiza el clic como el jugador en el que se hace clic deben estar dentro de los parceles de la escena. Este listener solo detecta eventos del jugador actual haciendo clic en otros jugadores, no los clics realizados por otros jugadores.
El evento incluye los siguientes datos:
userId: El id del jugador clicadoray: Datos sobre el rayo trazado por el clicdirection: Vector3 Un Vector3 normalizado que representa la dirección desde el punto de origen del clic hasta el punto de impacto del clic.distance: number La distancia en metros desde el punto de origen hasta el punto de impacto.origin: Vector3 El punto de origen del clic, la posición del jugador que hizo el clic, relativa a la escena.
Jugador bloquea/desbloquea cursor
📔 Nota: El onPointerLockedStateChange el evento está obsoleto desde SDK v7.x. Ver Listeners de eventos para una alternativa no obsoleta.
Los jugadores pueden alternar entre dos modos de cursor: modo cursor bloqueado para controlar la cámara o modo cursor desbloqueado para mover el cursor libremente sobre la UI.
Los jugadores desbloquean el cursor haciendo clic el Botón derecho del ratón o presionando la tecla Esc , y bloquean el cursor de nuevo haciendo clic en cualquier lugar de la pantalla.
Este onPointerLockedStateChange evento se activa cada vez que un jugador cambia entre estos dos modos, mientras está cerca de la escena.
📔 Nota: Este evento se dispara incluso si el jugador no está parado directamente dentro de la escena.
Jugador cambia de realm o isla
Los jugadores en Decentraland existen en diferentes realms, y en diferentes islands dentro de cada realm. Los jugadores en diferentes realms o islands no pueden verse, interactuar o chatear entre sí, incluso si están en los mismos parceles.
Cada vez que el jugador cambia de realm o island, se llama al evento onRealmChangedObservable .
📔 Nota: El onRealmChangedObservable el evento está obsoleto desde SDK v7.x. Las versiones futuras permitirán un enfoque más orientado a datos, basado en consultar regularmente datos en lugar de eventos.
Este evento incluye los siguientes campos:
serverName: string; El nombre del servidor catalyst.
room: string; El nombre de la isla.
displayName: string; El nombre del servidor catalyst seguido de un - y el nombre de la isla. Por ejemplo
unicorn-x011.domain: string; La URL del servidor catalyst que se está usando.
A medida que los jugadores se mueven por el mapa, pueden cambiar de isla para agruparse con aquellos jugadores que ahora están más cerca de ellos. Las islas también ajustan dinámicamente sus fronteras para encajar un grupo manejable de personas en cada una. Por lo tanto, incluso si un jugador permanece quieto, podría cambiar de isla a medida que otros entran y salen de las escenas circundantes.
Si tu escena depende de un servidor de terceros para sincronizar cambios entre jugadores en tiempo real, entonces podría interesarte compartir datos solo entre jugadores que estén agrupados en el mismo realm+island, por lo que es buena práctica cambiar de sala en el servidor de terceros cada vez que los jugadores cambien de island.
Funciones cripto
📔 Nota: Las funciones requirePayment(), signMessage(), convertMessageToObject() están obsoletas. Usa la función sendAsync() en su lugar. Ver Operaciones blockchain en la escena. También hay librerías que pueden ayudar a simplificar algunos casos de uso comunes con estas funciones.
Eventos de video
📔 Nota: El onVideoEvent el evento está obsoleto desde SDK v7.x. Ver Listeners de eventos para una alternativa no obsoleta.
Cuando un video cambia su estado de reproducción, el observable recibe un evento. onVideoEvent onVideoEvent.add((data) => {
videoClipId
): El ID de la entidad que cambió de estado.( stringcomponentId): El ID de la entidad que cambió de estado.(stringcurrentOffset): El valor actual de la propiedad(numberseeken el video. Este valor muestra segundos desde el inicio original del video.por defecto. -1 totalVideoLength): La duración en segundos de todo el video.(number si la duración es desconocida. -1 videoStatus: El valor del nuevo estado del video delVideoTexture, expresado como un valor del enumVideoStatus. Este enum puede contener los siguientes valores posibles:VideoStatus.NONEVideoStatus.ERROR= 0,VideoStatus.LOADING= 1,VideoStatus.READY= 2,VideoStatus.PLAYING= 3,VideoStatus.BUFFERING= 4,VideoStatus.PLAYING= 5
Última actualización