Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

387
Vistas
Elixir: obtener los valores en args, pasados desde Unity

Tengo la tarea de crear un servidor (que usa Elixir y Merigo SDE) para un juego de Unity.

Por ahora, me conformo con enviar datos desde Unity (C#), lo cual hago de la siguiente manera:

 public class ShotController : MonoBehaviour { public ConnectionHandler conHandler; public void Shoot(Vector3 direction, float power) { DataToSend data = new DataToSend(); data.power = power; data.direction_x = direction.x; data.direction_y = direction.y; conHandler.SendShotDetails(data); } } public class DataToSend { public float power = 0; public float direction_x = 0; public float direction_y = 0; } public class ConnectionHandler : MonoBehaviour, Playground.App.IPlaygroundDelegate { public void SendShotDetails<T>(T data) where T : class { Debug.Log("Shot!"); Playground.App.Manager.LocalGame.ScriptRequest("test_action", data); } }

Por el lado de merigo, tengo esto:

 # Test receive request def doRequest("test_action", args) do # Read the player data Sys.Log.debug("Test action fired... #{inspect args}") %{:results => "success"} end

Ahora, salvo por algunos errores con Unity, el lado de Elixir sí funciona; muestra lo siguiente:

Acción de prueba activada... %{"direction_x" => 0,9692893624305725, "direction_y" => 0,0, "power" => 12,293679237365723}

Pero no tengo idea de cómo obtener esos valores de args y devolverlos. args.power no funcionó.

¿Hay algo más que pueda probar?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Su mapa tiene sus claves como cadenas , también conocidas como binarios . La notación de puntos funciona para mapas si y solo las claves son átomos.

Tienes dos opciones.

Acceda al valor a través Access

 map = %{"direction_x" => 0.9692893624305725, "direction_y" => 0.0, "power" => 12.293679237365723 } map["power"] #⇒ 12.293679237365723

O, alternativamente, haga coincidir el patrón directamente en la cláusula de función

 def do_request("test_action", %{"power" => power}) do Sys.Log.debug("power is #{power}") end

o, desestructurarlo:

 def do_request("test_action", args) do %{"power" => power} = args Sys.Log.debug("power is #{power}") end

Notas al margen: por convención, las funciones en elixir se nombran en notación de guión bajo ( do_request en lugar de doRequest ) y cuando las claves del mapa son átomos, usamos una notación más corta con dos puntos : (en lugar de %{:results => "success"} do %{results: "success"} .)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda