• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

教您如何集成Nearby-Service提升游戏体验减少开发难度

android 搞代码 3年前 (2022-03-02) 21次浏览 已收录 0个评论
文章目录[隐藏]

HMS Nearby Service是HMS Core的一个重要个性,基于Wi-Fi/蓝牙底层技术,帮忙游戏玩家疾速发现周边的人,并在设施间主动建设低延时、高牢靠、零流量的数据传输通道,晋升游戏体验。

一、Nearby Service能够在以下方面为您的游戏提供更好的体验

1、一键联机

现有的本地联机计划须要用户接入同一个路由器,若无路由器则需用户手动建设热点,操作繁琐。Nearby Service能够实现一键本地联机而无需借助路由器。

2、面对面组队/加好友

Nearby Service能够帮忙您实现面对面组队/加好友,无需依赖社交软件,无需GPS,让玩家便捷的与身边的敌人一起“开黑”。

3、面对面道具分享

Nearby Service能够帮忙您的游戏疾速实现面对面道具分享,让玩家便捷的分享游戏道具给事实的敌人,这能够帮忙您的游戏拉新促活,减少用户粘性。

二、插件介绍

这里为大家带来两个曾经封装好的插件,您能够在利用中间接应用这两个插件;也能够查看插件源码理解如何集成Nearby Service。

1、开发筹备

  • Unity开发环境
  • 下载插件:GitHub

2、导入插件

  • 在Unity工具菜单上顺次关上”Assets”–> “Import Package” –> “Custom Package”,抉择插件:Nearby Player/Discovery Plugin
  • 期待对包的解决,实现后会列出插件中的资源列表,点击”Import”

3、要害代码介绍

3.1、Nearby Player Plugin

Nearby Player Plugin实用于面对面组队/加好友/分享等场景。插件中申明NearbyManager类,该类提供两个办法startDiscovery()和SendMessage()用于发现周边的玩家和发送音讯。

  • 在程序启动时调用startDiscovery发现四周玩家,同时也会被四周玩家发现。调用接口代码如下:
<code class="java">void Start() {
    AndroidMyCallback cb = new AndroidMyCallback(this);
    nm  = new  NearbyManager(cb);
    nm.startDiscovery(randomName());
}
  • 回调函数AndroidMyCallback用于定义发现胜利之后须要做的动作。
<code class="java">// 在发现一名玩家之后,如何解决。在本demo中咱们将其增加到玩家列表
public override void onFoundPlayer(string endpointName, string endpointId) {
    mListController.AddPlayerToList(endpointName, endpointId);
}
  
// 在失落一名玩家后,如何解决。在本demo中咱们将其移除玩家列表
public override void onLostPlayer(string endpointId) {
    mListController.RemovePlayerFromList(endpointId);
}
  
// 在收到玩家音讯时,如何解决。在本demo中咱们只展现音讯内容
public override void onReceiveMsg(string endpointName, string Msg) {
    mListController.ReceiveMsg(endpointName, Msg);
}
  • 发现左近玩家胜利之后,能够向玩家发送组队邀请/好友邀请/道具分享等音讯。
<code class="java">// 在本demo中,咱们点击玩家列表中的某位玩家,即向其发送组队邀请音讯
private void OnClick(string endpointId) {
    nm.log("OnClick. SendMessage to " + endpointId);
    nm.SendMessage(endpointId, "invites you to join a game.");
}

3.2、Nearby Discovery Plugin
Nearby Discovery Plugin基于Unity UNET组件开发的插件,应用该插件能够不须要用户连贯同一个Wi-Fi即可实现组网。插件中申明NearbyManager类,该类提供了两个办法startBroadcast()和startDiscovery()。在理论游戏场景中,在两个游戏设施中别离调用这两个接口便能够实现组网。

  • 调用接口代码示例
<code class="java">private void OnClick() {
    Button btn = this.GetComponent<Button>();
    btn.enabled = false;
    AndroidMyCallback androidMyCallback = new AndroidMyCallback(mNetworkManager);
    NearbyManager nearbyManager = new NearbyManager(androidMyCallback);
    nearbyManager.startBroadcast();
}
  • 回调函数AndroidMyCallback用于组网胜利之后须要做哪些动作,本例中在发现之后调用UNET的networkManager接口开始游戏
<code class="java">public class AndroidMyCallback : AndroidCallback {
    private NetworkManager mNetworkManager;
  
    public AndroidMyCallback(NetworkManager networkManager) : base()  {
        mNetworkManager = networkManager;
    }
     
    public override void onClientReady(string ipaddr) {
        mNetworkManager.networkAddress = ipaddr;
        mNetworkManager.StartClient();
    }
  
    public override void onServerReady(string ipaddr) {
        mNetworkManager.StartHost();
    }
}

4、示例利用

为便于您更好的理解如何应用插件,这里为您带来两个集成了上述插件的示例利用以便您参考。

  • Nearby-Player-Demo
  • UNET-NEARBY-DEMO

四、其余集成Nearby Service的游戏利用

  • Tic Tac Toe

Tic Tac Toe是一款基于Nearby原生安卓接口开发的本地联机对战游戏,集成Nearby Service之后能够实现无网络场景下的联机游戏,目前已上架华为利用市场。

  • NearbyGameSnake

NearbyGameSnake是一款集成了Nearby Service的多人联机游戏,操作界面简略,玩家无需配置网络,一键即可退出游戏。

五、更多详情

原文链接:
https://developer.huawei.com/consumer/cn/forum/topic/0201395195892590034?fid=18
作者:timer


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:教您如何集成Nearby-Service提升游戏体验减少开发难度

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址