极简式 Unity 获取 bilibili 直播弹幕、SC、上舰、礼物等 插件

2023-11-14

极简式 Unity 获取 bilibili 直播弹幕、SC、上舰、礼物等

1. 声明

下载链接
软件均仅用于学习交流,请勿用于任何商业用途!

2. 介绍

该项目为Unity实时爬取B站直播弹幕。

  • 项目介绍:通过传入B站直播间账号,实现监控B站直播弹幕、SC、上舰、礼物等。
  • 运行方式:下载后将文件夹 文件夹 BiliBiliLive 拖进 Unity 的 Asset 文件夹内即可完成安装。

3. 运行需求

  1. Unity2019 或更高
  2. c# 5.0以上
  3. 运行需要 Json 插件解析Json,若您的项目已经导入则无视即可。若未导入可将文件夹内的Json文件导入。

4. 使用方式

  1. 您需要在主脚本中引入命名空间 using Liluo.BiliBiliLive;
  2. 在任意Mono脚本中编写以下脚本,以建立一个连接到BiliBili直播间。RoomID 为房间号。
    注意,本插件大量使用了异步编程,对于这样的方法,您需要使用async修饰类,并使用await等待函数完成。
IBiliBiliLiveRequest req;
async void Init(int RoomID)
{
    // 创建一个直播间监听对象
    req = await BiliBiliLive.Connect(RoomID);
}
  1. 如需释放监听,可使用 DisConnect 方法释放。
void OnDestroy()
{
    // 释放监听对象
    req.DisConnect();
    req = null;
}
  1. 定时监听房间人数
    该函数每隔一段时间调用,其入参为当前房间人数(热度)。
req.OnRoomViewer = number =>
{
    Debug.Log($"当前房间人数为: {number}");
};
  1. 监听指定内容
    以下是个函数为主要监听使用函数,其入参分别为对应监听事件的相关信息结构体。VS中按下 Ctrl+左键 即可了解以下结构体提供的具体信息。
/// 监听弹幕回调函数
public Action<BiliBiliLiveDanmuData> OnDanmuCallBack;

/// 监听礼物回调函数
public Action<BiliBiliLiveGiftData> OnGiftCallBack;

/// 监听上舰回调函数
public Action<BiliBiliLiveGuardData> OnGuardCallBack;

/// 监听SC回调函数
public Action<BiliBiliLiveSuperChatData> OnSuperChatCallBack;

4. 示例启动脚本

using UnityEngine;
using UnityEngine.UI;
using Liluo.BiliBiliLive;

public class Online : MonoBehaviour
{
    public Image img;
    public int RoomID;
    IBiliBiliLiveRequest req;

    async void Start()
    {
        // 创建一个监听对象
        req = await BiliBiliLive.Connect(RoomID);
        req.OnDanmuCallBack = GetDanmu;
        req.OnGiftCallBack = GetGift;
        req.OnSuperChatCallBack = GetSuperChat;
        bool flag = true;
        req.OnRoomViewer = number =>
        {
        	// 仅首次显示
            if (flag) Debug.Log($"当前房间人数为: {number}");
        };
    }

    /// <summary>
    /// 接收到礼物的回调
    /// </summary>
    public async void GetGift(BiliBiliLiveGiftData data)
    {
        Debug.Log($"<color=#FEA356>礼物</color> 用户名: {data.username}, 礼物名: {data.giftName}, 数量: {data.num}, 总价: {data.total_coin}");
        img.sprite = await BiliBiliLive.GetHeadSprite(data.userId);
    }

    /// <summary>
    /// 接收到弹幕的回调
    /// </summary>
    public async void GetDanmu(BiliBiliLiveDanmuData data)
    {
        Debug.Log($"<color=#60B8E0>弹幕</color> 用户名: {data.username}, 内容: {data.content}, 舰队等级: {data.guardLevel}");
        img.sprite = await BiliBiliLive.GetHeadSprite(data.userId);
    }

    /// <summary>
    /// 接收到SC的回调
    /// </summary>
    public async void GetSuperChat(BiliBiliLiveSuperChatData data)
    {
        Debug.Log($"<color=#FFD766>SC</color> 用户名: {data.username}, 内容: {data.content}, 金额: {data.price}");
        img.sprite = await BiliBiliLive.GetHeadSprite(data.userId);
    }

    private void OnApplicationQuit()
    {
        req.DisConnect();
    }
}

4. 运行截图

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

极简式 Unity 获取 bilibili 直播弹幕、SC、上舰、礼物等 插件 的相关文章

  • Qt 图表和数据可视化小部件

    我已经安装了 Qt 5 7 来尝试 Qt 图表和 Qt 数据可视化 但我在 Qt Designer 和 Qt Creator 中都找不到新的小部件 有什么建议我应该做什么才能让新的小部件出现在设计器中 我今天遇到了完全相同的问题 默认情况下
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • STL之类的容器typedef快捷方式?

    STL 容器的常见模式是这样的 map
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 如何将 Q 格式整数转换为浮点数(反之亦然)?

    我四处搜寻 找不到一个很好的问题来回答这个问题 给定一个整数 使用Q Format https en wikipedia org wiki Q number format 如何将该数字转换为普通浮点类型 反之亦然 如何将浮点类型转换为Q F
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • 使用多态对象数组进行 JSON 反序列化

    我在涉及多态对象数组的 JSON 反序列化方面遇到问题 我已经尝试过记录的序列化解决方案here https stackoverflow com questions 5186973 json serialization of array w

随机推荐

  • react组件在页面切换时,如果页面组件已经被销毁,终止已销毁页面的请求的解决方案

    就比如说下面这个请求时间太长了 在它还没有请求成功就切换了页面 销毁了页面组件 useEffect就会给它设置成true 抛弃这个请求 const ignore useRef false useEffect gt return gt ign
  • 【STM32实战】机械臂快递分拣系统(二)——机械臂控制程序(上位机)编写

    STM32实战 机械臂快递分拣系统 二 机械臂控制程序 上位机 编写 前言 题目分析 蓝牙模块的使用 上位机程序的编写 连接阿里云 测试 前言 近期回校上最后一门课 刚好是做机械臂有关的题目 所以写文记录一下 主要实现的是可以自动识别获取快
  • 线与逻辑与OC门、OD门关系

    线与逻辑 两个或多个输出信号连接在一起可以实现逻辑 与 的功能 以下图为例 当与非门G1和G2输出都为1时 输出L才为1 只要有一个输出为0 则输出L为0 在硬件上 要用OC门 三极管 集电极开路 或OD门 NMOS 漏极开路 来实现 另外
  • Qt5打包——利用自带的windeployqt.exe和工具Enigma Virtual Box

    目录 运行 添加依赖 发布成单一exe形式 运行 选择Release版本 运行一次 Release 运行后会发现多了Release版本 里面有exe 但是双击时会发现缺少一些动态链接库 直接点击后缺少动态链接库 添加依赖 在你的Qt的安装包
  • 提高单机短连接QPS到20万

    提高单机短连接QPS到20万 转载于http weibo com ttarticle p show id 2309404037884855362229 一般的通讯协议在设计上都避免服务器端主动发起TCP连接关闭 让客户端来发起close s
  • 解决,worldGeo.db中有geom数据的x1表无法在QGIS中成图像

    原因 缺少geom数据对应的坐标geometry columns文件 如下图所示 STEP 1 在navicat for SQLite中将目标表x1中字段geom中blob改成 POINT 或者MULTIPOLYGON等对应的格式 注意 f
  • 成功解决Windows MemoryError: Unable to allocate 6.38 GiB for an array with shape (38

    因为运行文件所在的磁盘分配内存不够问题造成的 解决方法如下 打开我的电脑 右键属性 高级 性能设置 选择高级 更改 点击E盘 点击自定义大小 设置分配内存 我选择6G 6144kb 点击确定完成 再次运行文件 问题解决
  • invalid credential, access_token is invalid or not latest hint(微信 上传图片返回 error)

    errcode 40001 errmsg invalid credential access token is invalid or not latest hint 3G1y5a0106vr61 这种情况跟这个库没有直接关系 请检查一下是否
  • 5分钟讲解直流线性稳压降压电源基本原理

    怎么把 12 v电变为 5v呢 通过变压器是可以实现的 但是变压器只能转换交流电 那直流电怎么转换呢 我们来看下最简单的降压方式 比如负载是 5欧 那么要得到 5V的压降 按照串联分压原理 需要给它串联一个 7 欧的电阻附加 就能得到 5
  • 【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

    目录 一 问题背景 二 修改方法 2 1 修改种子 2 2 使用linux中的 dev urandom 生成随机数 三 dev random 和 dev urandom 的原理 3 1 参考连接 3 2 重难点总结 3 2 1 生成随机数的
  • 9*9乘法表

    package practice 99乘法表 public class Test02 public static void main String args for int i 1 i lt 9 i 外层控制行数 for int j 1 j
  • 【查缺补漏】“.“ 和 “->“运算符的区别是什么?

    目录 简介 Note 结语 简介 Hello 非常感谢您阅读海轰的文章 倘若文中有错误的地方 欢迎您指出 昵称 海轰 标签 程序猿 C 选手 学生 简介 因C语言结识编程 随后转入计算机专业 获得过国家奖学金 有幸在竞赛中拿过一些国奖 省奖
  • shell test功能

    test测试功能 对于要测试系统上面某些文件或其相关属性时 可以使用test进行测试 test会根据相关功能返回True或False 测试文件类型test e filename 测试功能 意义 e 该文件是否存在 f 该文件名是否存在且为文
  • SSD1306 - OLED显示屏

    SSD1306 OLED显示屏 芯片介绍 引脚介绍 SSD1306是一款带控制器的用于OLED点阵图形显示系统的单片CMOS OLED PLED驱动器 它由128个SEG 列输出 和64个COM 行输出 组成 该芯片专为共阴极OLED面板设
  • 数据的无量纲化处理和标准化处理的区别是什么

    数据的无量纲化处理和标准化处理的区别是什么 请教 两者除了方法上有所不同外 在其他方面还有什么区别 解答 标准化处理方法是无量纲化处理的一种方法 除此之外 还有相对化处理方法 包括初值比处理 函数化 功效系数 方法 等等 由于标准化处理方法
  • C++11智能指针之unique_ptr

    1 智能指针概念 智能指针是基于RAII机制实现的类 模板 具有指针的行为 重载了operator 与operator gt 操作符 可以 智能 地销毁其所指对象 C 11中有unique ptr shared ptr与weak ptr等智
  • 英语 动词过去式和过去分词的变化规则

    动词过去式和过去分词有规则变化和不规则变化两种 实例顺序 动词原形过去式过去分词 发音 ed在清辅音音素后发音为 t 在浊辅音后发音为 d 在元音后发音也为 d 在 t d 后发音为 id 一 规则变化 1 一般在动词原形后加 ed loo
  • 嵌套查询及其与join的区别

    嵌套即可以写在select子句中 也可以写在from子句中 下面以SQL Entity为例来说明 1 嵌套在select中 以父表为主在select中嵌套子表信息 SELECT c Title ANYELEMENT SELECT oa Fi
  • mysql联合索引最左匹配原则的底层实现原理

    mysql联合索引最左匹配原则的底层实现原理 要看懂 需要熟悉mysql b tree的数据结构 b tree的叶节点和叶子节点的排序特性是按照 从小到大 从左到右的这么一个规则 int直接比大小 uuid比较ASCII码 联合索引的排序规
  • 极简式 Unity 获取 bilibili 直播弹幕、SC、上舰、礼物等 插件

    极简式 Unity 获取 bilibili 直播弹幕 SC 上舰 礼物等 1 声明 下载链接 软件均仅用于学习交流 请勿用于任何商业用途 2 介绍 该项目为Unity实时爬取B站直播弹幕 项目介绍 通过传入B站直播间账号 实现监控B站直播弹