• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

318
Views
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?

almost 3 years ago · Santiago Trujillo
1 answers
Answer question

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"} .)

almost 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error