Я не проверял, работает ли это на самом деле, но я смог обойти ошибку, которая у вас есть здесь ...
1) Если вы установили лучший результат из NuGet (пакет метаданных), удалитепопробуйте использовать пакет 'clzmq' (или 64-битную версию).
2) Скопируйте библиотеки DLL из: 'C: \ Users \ .nuget \ packages \ clrzmq \ 2.2.5 \ lib' & 'C: \ Users \ .nuget \ packages \ clrzmq \ 2.2.5 \content »в папку« Assets »вашего проекта Unity.
3) В вашем скрипте переключите« using ZeroMQ; »на 'использование ZMQ;'
Вы должны быть в состоянии запустить в этот момент.
Я не пробовал копировать библиотеки DLL из первого пакета 'ZeroMQ' с помощью метаданных, поэтому вы можете попробовать этоесли хочешь.Сначала я бы попробовал clzmq, если он не соответствует вашим потребностям, тогда сделайте метадинг еще раз.Вам также нужно будет настроить Unity с поддержкой платформы 4.0 для использования пакета метаданных.
ОБНОВЛЕНИЕ: я закончил тестировать это.Мне пришлось использовать версию x64, но она работает.Вот полный сценарий:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Text;
using ZMQ;
public class mqtest : MonoBehaviour
{
public float speed;
private Rigidbody rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
System.Console.WriteLine("Hey");
rb.AddForce(movement * speed);
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown("space"))
{
print("space key was pressed");
string endpoint = "tcp://127.0.0.1:5555";
// ZMQ Context and client socket
using (ZMQ.Context context = new ZMQ.Context())
using (ZMQ.Socket client = context.Socket(SocketType.REQ))
{
client.Connect(endpoint);
string request = "Hello";
client.Send(request, Encoding.UTF8);
}
}
}
}