• Stars
    star
    145
  • Rank 253,090 (Top 5 %)
  • Language
    C#
  • Created over 2 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

极简式 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+左键 即可了解以下结构体提供的具体信息。
/// 监听弹幕回调函数
event Action<BiliBiliLiveDanmuData> OnDanmuCallBack;

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

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

/// 监听SC回调函数
event Action<BiliBiliLiveSuperChatData> OnSuperChatCallBack;
  1. 获取用户头像 也许你会需要获取对应用户的头像,本插件提供两种方法供选择
// 获得Texture图像
BiliBiliLive.GetHeadTexture(userId);
// 获得精灵图像
BiliBiliLive.GetHeadSprite(userId);

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

在这里插入图片描述

More Repositories