Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

384
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda