unity接入mqtt自救指南

这篇具有很好参考价值的文章主要介绍了unity接入mqtt自救指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.环境准备

HslCommunication.dll (版本:11.5.3.0)

Newtonsoft.Json.dll (版本 13.0.1.25517)

dll自取

2.client相关

using UnityEngine;
using HslCommunication.MQTT;
using System.Text;
using System;
using UnityEngine.Networking;
using System.Collections;
using Google.Protobuf;
using Newtonsoft.Json;

public class MqttManager : MonoBehaviour
{
    private MqttClient mqttClient;
    void Start()
    {
        StartCoroutine(Post(OnWebCallback));
    }


    //post 请求 获取mqtt信息 业务相关代码和谐掉了 
    public IEnumerator Post(Action<string> callback)
    {
        // yield return new WaitForSeconds(5f);
        string url = "www.baidu.com";
        var request = new UnityWebRequest(url, "POST");
        string json = "~~~";
        byte[] bodyRaw = new System.Text.UTF8Encoding(true).GetBytes(json);
        request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");

        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            Debug.Log(request.error);
        }
        else
        {
            callback(request.downloadHandler.text);
        }
    }

    private void OnWebCallback(string obj)
    {
        WebLoginData entity = JsonConvert.DeserializeObject<WebLoginData>(obj);
        mqttClient = new MqttClient(new MqttConnectionOptions()
        {
            ClientId = entity.result.mqttClientId,                     // 客户端的唯一的ID信息
            IpAddress = entity.result.mqttHost,   //"127.0.0.1",              // 服务器的地址
            // Port = 8083,                          // 端口
            UseSSL = false,
            Credentials = new MqttCredential() { UserName = entity.result.mqttUserName, Password = entity.result.mqttPassword },
            CleanSession = true,

        });

        // 连接服务器
        HslCommunication.OperateResult connect = mqttClient.ConnectServer();
        if (connect.IsSuccess)
        {
            // 连接成功
            UnityEngine.Debug.Log("连接成功");
        }
        else
        {
            // 连接失败,过会就需要重新连接了
            UnityEngine.Debug.Log("连接失败");
        }
        // 然后添加订阅
        // HslCommunication.OperateResult sub = mqttClient.SubscribeMessage("test");
        if (sub.IsSuccess)
        {
            // 订阅成功
            UnityEngine.Debug.Log("订阅成功");
        }
        else
        {
            // 订阅失败
            UnityEngine.Debug.Log("订阅失败");
        }
        // 订阅示例
        mqttClient.OnMqttMessageReceived += (MqttClient client, string topic, byte[] payload) =>
        {
            //业务
        };
    }
}

3.server相关

server 我使用的是 mosquitto 

mqtt server 自取

mosquitto:代理器主程序

mosquitto.conf:配置文件

mosquitto_passwd:用户密码管理工具

mosquitto_pub:用于发布消息的命令行客户端

mosquitto_sub:用于订阅消息的命令行客户端

mqtt:MQTT的后台进程

libmosquitto:客户端编译的库文件

参数说明

-c 启动mosquitto可以调整的参数,配置文件
-d 表示MQTT mosquitto将在后台运行。
-p 代表当前的mosquitto服务实例启动以后,其监听端口号
-v 代码调试模式(verbose)

启动服务器 (我在这里使用cmd 调用会报错 后来使用 powershell.exe 调用命令并未报错)

mosquitto -c /etc/mosquitto/mosquitto.conf -d

服务器配置

mosquitto.conf配置文件,1、监听的端口;2、不允许匿名登陆;3、登陆账号信息的文件​​​​​​​文章来源地址https://www.toymoban.com/news/detail-756487.html

listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd

到了这里,关于unity接入mqtt自救指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3D教程:2D游戏技能特效

    在我们的2D图形游戏中不可缺少大量的光影、技能特效,像Diablo II中的魔法效果的实现,幸好我们拥有强大的CPU来为我们实现Alpha混合与色彩饱和混合,接下来让我们来讨论一下如何用这些方法来实现我们游戏中所需要的技能特效。     一、Alpha混合特效     Alpha混合可以让我

    2024年02月01日
    浏览(34)
  • 【Unity3D】如何用使用Unity实现退出游戏的功能

    1、使用Unity编译器时: 2、打包后: 很多时候,我们都知道Application.Quit()代码,但是我们在Unity编译器调试的时候发现即使挂上了这个代码的组件或物体都无法退出编译,因为该代码只在打包后可以实现退出功能。 所以我们可以把两个实现代码同时写入脚本,这样既可以在编

    2024年02月11日
    浏览(48)
  • UNITY3D回合制游戏开发教程案例

    UNITY3D实现回合制游戏 ,类似梦幻西游,口袋妖怪,阴阳师。 先上效果 UNITY3D 回合制游戏案例源码开发教程 普通攻击 AOE技能 游戏概述 回合制游戏是一种策略游戏,玩家需要在自己的回合内进行决策,然后等待对手的回合。游戏通常包括角色扮演、卡牌、战略等元素,玩家需

    2024年02月09日
    浏览(50)
  • Unity读书系列《Unity3D游戏开发》——编辑器的结构

    本篇对应标题书籍的第二章编辑器的结构,也就是unity的编辑器的使用及菜单的使用。 当我们制作的软件或游戏需要多人合作时,就会使用git、svn进行版本管理。一般来说只保留Assets、ProjectSettings、Packages这几个文件夹,git会自动生成.git文件,我们添加需要屏蔽的文件夹或后

    2024年01月25日
    浏览(55)
  • 以unity3d为例解读:游戏数据加密

    目录 前言 1、Virbox 一、Virbox 是怎么做的? 1、如何对程序进行保护? 2、如何对资源进行保护? 3、使用加密工具前后比较 二、Virbox 保护方案特点 l 更安全 l 更全面 l 更简单 2、DES和RSA加密算法 一、DES加密算法 二、RSA加密算法 RSA加密算法的基本流程如下: 网络游戏数据文

    2024年02月02日
    浏览(55)
  • 使用Unity3D制作2D游戏的重点做法

    官网上有提供一个 2D游戏的教学范例 ,这个游戏只不过把镜头摆放在横向位置跟随角色移动,游戏内物件运动时固定一个轴不动,使他像横轴式的2D游戏来玩,本质上其实还是个3D游戏,所以如果没有3D建模的话不就没办法做2D游戏了?其实这些并没有定论,就看制作者如何运

    2024年02月11日
    浏览(38)
  • 【unity3D】unity记忆翻牌小游戏教程(简单详细)

    游戏开发的 学习记录 ⑨ (最近在做得游戏里想加一个类似于记忆翻牌小游戏得部分,然后在网上收集了资料学习了一下,学会后写下这份制作记录,希望可以帮到你~) 📜一位大佬的博客,写的很详细:【Unity3D游戏教程】记忆翻牌游戏 (大家可以先看大佬这篇,我写这篇

    2024年02月07日
    浏览(202)
  • Unity3D项目之游戏场景小地图制作

    创建一个场景资源,可在asset store资源商店下载,选择心仪场景。 链接:https://assetstore.unity.com/?locale=zh-CN 添加一个对象GameObject,命名为player,子物体包括:主摄像机,角色,后面步骤会添加一个plane。 添加一个地图摄像机,命名为MapCamera。修改属性projection为OrthoGraphic;Size为

    2024年02月11日
    浏览(45)
  • Unity3D PVP游戏位置同步算法优化详解

    在Unity3D中,PVP(Player versus Player)游戏的位置同步是一项重要的技术,它决定了游戏中玩家之间的互动体验。本文将详细介绍Unity3D PVP游戏位置同步算法的优化方法,并给出相应的技术详解和代码实现。 对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础

    2024年01月16日
    浏览(38)
  • 【Unity3D赛车游戏】【五】Unity中汽车加速效果是如何优化的?

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity游戏demo – 😶‍🌫️版本: Unity2021 😶‍🌫️适合人群:Unity初学者 😶‍🌫️学习目标:3D赛车游戏的基础制作 😶‍🌫️技能掌握

    2024年02月10日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包