我正在尝试为Unity中的项目导入ZeroMQ库。我正在使用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()
{
}
}
如何让编译器查看该软件包?感激!
答案 0 :(得分:1)
我没有测试这是否真的有效,但是我能够克服您在这里遇到的错误...
1)如果您从NuGet(metadings软件包)安装了最佳结果,则将其卸载并尝试使用“ clzmq”软件包(或64位版本)。
2)从以下位置复制DLL: 'C:\ Users \ .nuget \ packages \ clrzmq \ 2.2.5 \ lib'& 'C:\ Users \ .nuget \ packages \ clrzmq \ 2.2.5 \ content' 到Unity项目的“资产”文件夹。
3)在您的脚本中,切换“使用ZeroMQ;”到“使用ZMQ;”
此时您应该可以运行。
我没有尝试通过元数据从第一个“ ZeroMQ”程序包中复制DLL,因此您可以尝试使用。我会先尝试clzmq,如果它不符合您的需求,请再给metadings。您还必须使用4.0框架支持配置Unity才能使用metadings包。
更新: 我最终对此进行了测试。我必须使用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);
}
}
}
}