Как импортировать ZeroMQ в движок Unity? - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь импортировать библиотеку ZeroMQ для проекта в Unity.Я использую C# и Visual Studio для редактирования.Я использовал NuGet для импорта ZeroMQ в Visual Studio, но когда я пытаюсь запустить игру, я получаю сообщение об ошибке

Severity    Code    Description Project File    Line    Suppression State
Error   CS0246  The type or namespace name 'ZeroMQ' could not be found (are you missing a using directive or an assembly reference?)    Assembly-CSharp C:\Users\<me>\OneDrive\Documents\UrBalls\Assets\Scripts\PlayerController.cs 4   Active

Файл контроллера из учебника:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ZeroMQ;

public class PlayerController : 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()
    {        
    }
}

Как сделатьЯ получаю компилятор, чтобы увидеть пакет?Оценил!

1 Ответ

0 голосов
/ 07 мая 2019

Я не проверял, работает ли это на самом деле, но я смог обойти ошибку, которая у вас есть здесь ...

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