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

极简式 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. 运行截图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_50682713/article/details/125116647
今日推荐