找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 237|回复: 9

代码 | 收集 客户端和办事 器

[复制链接]

该用户从未签到

5

主题

26

帖子

31

积分

LV.1

Rank: 1

积分
31
QQ
发表于 2016-6-24 13:41:20 | 显示全部楼层 |阅读模式
良多多人游戏都可以应用NetworkManager类来治理收集衔接,可是也可以直接应用更初级的NetworkServer和NetworkClient类来治理。
当应用HLAPI的时辰,每个游戏都必需要有一个办事器来主持游戏。是以每个参加游戏的玩家都可以作为客户端,专用办事器,或者同时作为办事器和客户端。这种归并的脚色在没有专用办事器的情形下是很常见的。
对于没有专用办事器的多人游戏,此中一个介入的玩家作为游戏的办事器,在阿谁玩家的机械上,运行着一个当地客户端而不是通俗的长途客户端。当地客户端应用和办事器雷同的场景和物体,而且和当地办事器应用新闻队列进行通讯,而不是经由过程收集上的新闻。
可是对于HLAPI的代码和体系来说,当地客户端也是一个客户端,他的代码和长途客户端几乎是完整一样的。如许游戏很轻易的就能用统一套代码运行在多玩家模式和单机模式下。
多人游戏凡是的模式是拥有一个治理收集状况的治理类。下面的代码就是如许一个治理类的雏形。这个剧本可以作为一个组件添加到开端场景的一个物体上。他还有一个简略的用户界面和键盘输进函数答应游戏用分歧的收集模式启动。对于真正的游戏,可能会应用更都雅的菜单项,好比“开端单机模式”或“开启多玩家模式”。
using UnityEngine;
using UnityEngine.Networking;
public class MyNetworkManager : MonoBehaviour {
public bool isAtStARtup = true;
NetworkClient myClient;
void Update ()
{
if (isAtStartup)
{
if (Input.GetKeyDown(KeyCode.S))
{
SetupServer();
}


if (Input.GetKeyDown(KeyCode.C))
{
SetupClient();
}


if (Input.GetKeyDown(KeyCode.B))
{
SetupServer();
SetupLocalClient();
}
}
}
void onGUI()
{
if (isAtStartup)
{
GUI.Label(new Rect(2, 10, 150, 100), &quotress S for server");
GUI.Label(new Rect(2, 30, 150, 100), &quotress B for both");
GUI.Label(new Rect(2, 50, 150, 100), &quotress C for client");
}
}
}
这个代码框架应用设置函数进行工作,下面是每种设置函数的例子。这些函数能创立一个办事器,或分歧种类的客户端。留意这里的长途客户端假设办事器是在本机上(127.0.0.1),对真正的游戏来说,这应当是个真实的网路地址,或从竞赛治理体系拿到的信息。
// Create a server and listen on a port
public void SetupServer()
{
NetworkServer.Listen(4444);
isAtStartup = false;
}


// Create a client and connect to the server port
public void SetupClient()
{
myClient = new NetworkClient();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
myClient.Connect("127.0.0.1", 4444);
isAtStartup = false;
}


// Create a local client and connect to the local server
public void SetupLocalClient()
{
myClient = ClientScene.ConnectLocalServer();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
isAtStartup = false;
}
上面的客户端代码中为衔接事务MsgType.Connect注册了回调函数,这是一个HLAPI内建的新闻,他会在客户端衔接到办事器的时辰发生。在这个例子中,客户真个处置函数可以写为:
// client function
public void onConnected(NetworkMessage netMsg)
{
Debug.Log("Connected to server");
}
这就能让一个多玩家利用跑起来了。此刻可以应用NetworkClient.Send和NetworkServer.SendToAll函数来在收集上发送新闻了。然而发送收集新闻是一个初级的和体系交互的方式。

该用户从未签到

1

主题

21

帖子

6

积分

LV.1

Rank: 1

积分
6
QQ
发表于 2016-9-10 14:51:13 | 显示全部楼层
增强现实希望发展越来越好

该用户从未签到

1

主题

46

帖子

3

积分

LV.1

Rank: 1

积分
3
QQ
发表于 2016-9-27 16:26:17 | 显示全部楼层
竟然还有零回复,给我消失

该用户从未签到

0

主题

7

帖子

7

积分

LV.1

Rank: 1

积分
7
QQ
发表于 2016-10-1 15:59:50 | 显示全部楼层
楼主辛苦了,帮楼主顶起来

该用户从未签到

1

主题

46

帖子

3

积分

LV.1

Rank: 1

积分
3
QQ
发表于 2016-10-26 00:48:26 | 显示全部楼层
想了解下AR增强现实的相关内容来看看

该用户从未签到

4

主题

45

帖子

24

积分

LV.1

Rank: 1

积分
24
QQ
发表于 2016-11-3 15:47:30 | 显示全部楼层
增强现实,增强现实,增强现实。重要的事情说三遍

该用户从未签到

0

主题

36

帖子

0

积分

LV.1

Rank: 1

积分
0
QQ
发表于 2018-6-10 22:05:45 | 显示全部楼层
看帖怎么能不会呢??

该用户从未签到

0

主题

12

帖子

9

积分

LV.1

Rank: 1

积分
9
QQ
发表于 2018-6-25 05:13:22 | 显示全部楼层
这里竟然还有这么一个关于AR的网站的收藏了

该用户从未签到

1

主题

15

帖子

15

积分

LV.1

Rank: 1

积分
15
QQ
发表于 2018-7-9 16:04:36 | 显示全部楼层
嗯,很不错的样子!!

该用户从未签到

3

主题

19

帖子

23

积分

LV.1

Rank: 1

积分
23
QQ
发表于 2018-7-17 06:04:29 | 显示全部楼层
楼主写的很不错,关于AR的知识受教了
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表