开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛译馆

关注:481

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 2550|回复: 35

[Unity教程] SteamVR Network Essentials插件教程

[复制链接]  [移动端链接]
7日久生情
2944/5000
排名
1209
昨日变化

31

主题

523

帖子

2944

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
133683
好友
41
蛮牛币
5926
威望
0
注册时间
2016-1-6
在线时间
578 小时
最后登录
2017-1-19

专栏作家蛮牛译员活力之星锦衣玉食

QQ
发表于 2016-8-2 21:43:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
资源商店插件地址:https://www.assetstore.unity3d.com/cn/#!/content/63969 或者直接搜索SteamVR Network Essentials
SteamVR Network Essentials.png
前言:该插件需要接近20美刀,折合人民币133元多,有点小贵(土豪可以无视),所以联盟的成员们决定一起合力购买,以节约大家的学习成本.关键是我们并不知道该插件的实际效果,是否好用,所以这算是一个供学习和测试的版本.
特此声明:该插件我们是用来学习的,根据国际软件学习惯例,我们可以免费学习任何软件,如果要用来商用,请购买正版.


实际上,我们成立一个基金池,以购买学习所需软件,仅适用于学习和试用,商业开发还是需要购买正版的!这种方式其实也是对插件的一种推广方式,也许作者会不太喜欢。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps7216.tmp.jpg
----------------------------------------------------------------------------

下面从案例场景开始教学
--------------------------------------

加载Assets/LRX.SteamVR.Network.Essentials/Scenes路径下的案例场景,并在hierarchy窗口选择"Network Manager",如图所示。
NetworkManager.png file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps7217.tmp.jpg
你将在这里发现一个轻微自定义过的默认Unity Network Manager版本。注意被添加的一些属性:"VR Player Prefab"和布尔值"Should Be Server",如上图所示.

确保你在Network Manager里面的"Network Info"之下的字段"Network Address"已经输入了一个有效的IP地址。
勾选"Should Be Server"选项并按下play。现在戴上你的HTC Vive头盔。你应该可以看到案例场景就在你眼前了。
客户端要连接的话,你需要一个打包好的版本,确保配置其中一个为客户端,另外一个配置为服务器。要么是通过之前提到的"Should Be Server"开关,或者外部的配置文件"settings.cfg"(这个后面会详细讲)。
Network address.png file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps7227.tmp.jpgfile:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps7228.tmp.jpg
记住:你不能在同一台机器上同时运行两个支持VR的应用。所以确保你只有一个VR应用的实例运行在一台电脑上。

提示:你可以在"Player settings.." -> "Other Settings" -> "Rendering"里面关掉"Virtual Reality Supported",如上图所示。并用第一人称控制开始游戏,这样就不需要戴VR头盔了。
这样做对于测试、调试异步游戏机制很有帮助。
VRsupport.png
先开始服务器实例并确保你已经通过TCP/IP联通了客户端和服务器实例,也就是局域网保持畅通无阻,两台机器都连结了局域网。
客户端启动后就会自动尝试连接服务器。

VR网络的准则
---------------------------

我不会解释UNetUnity Networking框架的潜在机制,因为已经有大量的相关信息可用了。取而代之,我会聚焦于如何将SteamVR plugin概念集成进UNet范例中。

第一,所有的玩家生成被手动处理,因为我们想要根据当前游戏是否开启VR支持来单独生成预设。为了使这个成为可能每一个客户端都会通过连接发送一条额外的消息表明VR支持的状态。当一个客户端链接时Network Manager才根据这个消息来实例化对应的预设。

接下来我们需要在整个网络的游戏世界中展示VR玩家的双手。我们在这里使用UNets NetworkTransforms。我们额外启用玩家授权他们的双手。

为了能够拾取物品,我们需要能够在运行时改变授权。VRPlayerController负责实现这一切。

最后一步是确保物品可用。我们为GunItem使用IUsable接口并实现它。

如何使用包含的预设
------------------------------

1.创建一个新的Unity 3D项目;
2.导入"SteamVR Network Essentials"
3.找到"SteamVR Network Essentials"里面的/Prefabs文件夹,并把"Network Manager"预设托动到你的场景里面;
4.你也需要至少添加一个"PlayerSpawnPoint"预设。这是一旦游戏连接到服务器后玩家将立即开始的敌方;
5.可选:添加一个"Gun"预设来尝试物体互动和射击;
6.可选:添加"Enemy"预设或者一个"EnemySpawner"预设作为练习目标;
7.配置"Network Manager":
  -确保"Network Address""Should Be Server"设置正确;
  -打开"Spawn Info"配置表并在这里调整设置;
-"Player Prefab"需要被设置为NonVRPlayer预设;
-"Auto Create Player"不需要勾选;
-把每一个将会在联网游戏中生成的游戏对象注册到"Registered Spawnable Prefabs"列表中,例如Player, Hand, Bullet, Enemy, Gun等等;
-确保你在底部"VR Player Prefab"一栏为VR玩家设置了正确的预设。


怎样使用包含的脚本
-------------------------------
可用脚本.png file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps7239.tmp.jpg
Bullet.cs:
这是一个简单的生命周期脚本,会在一定的时间或者碰撞后摧毁子弹。

CustomNetworkManager.cs:
把这个脚本添加到一个空对象上面创建一个network manager,允许配置基本的网络设置。

EnemySpawner.cs:
在周围随机生成一个敌人。

GunItem.cs:
实现接口IUsable,一个可用道具的简单事例,使用时发射子弹。

Health.cs:
简单的体力脚本,包含了"Destroy on Death"开关。

InteractableObject.cs:
需要在游戏对象上添加刚体和碰撞体,把这个脚本添加到那些你想要玩家发生互动的道具上,互动包括:触摸,抓取,丢弃,投掷,使用。

NetworkVRHands.cs:
这个脚本负责基本的道具操控和回应网络通信,把它添加到你的VR玩家的手上,也可以是手的代表对象,例如手柄控制器。

VRPlayerController.cs:
创建VR Camera Rig并负责实例化联网的VR双手。

PlayerController.cs:
一个为非VR玩家准备的简单的基于控制组合的第一人称控制脚本。

SpawnMessage.cs:
包含一个额外的网络消息在登录时表明VR支持状态。

接口 ITouchable and IUsable:
为自定义对象行为实现接口,可触摸和可使用。


如何扩展案例
----------------------------

添加敌人行为:
只需添加一些脚本到敌人身上.

添加新道具:
创建一个带刚体组件的游戏对象,添加"InteractableObject"脚本。如果该道具可以被使用,在"InteractableObject"脚本组件中勾选"IsUsable"。那些可以使用的道具你还需要另外一个脚本来实现"IUsable"接口。

添加出生点:
只需添加更多的出生点到场景中,脚本会自动地探测到它们。


通过settings.cfg来配置
------------------------------

对于打包出来的可执行项目,有一个简单的配置机制可用:添加一个叫做"settings.cfg"的文件到你的Unity打包文件下的data数据文件夹中。第一行必须为主机读取"Server",代码会在这个设置文件的第二行寻找服务器的IP地址。

服务器settings.cfg配置案例:
Server
0.0.0.0

客户端settings.cfg配置案例:
Client
192.168.0.101


预设列表
---------------
* VRPlayer - VR玩家预设
* Hand -VR玩家的手部视觉代表预设
* NonVRPlayer - VR玩家预设
* Gun - 一个简单的可互动对象,有一个实现了IUsable接口的GunItem脚本
* Bullet - 枪的简单子弹
* Enemy - 一个简单的敌人预设,可以生成和被射击,当生命值低于零后消失。
* EnemySpawner - 随机生成敌人
* Network Manager - 时刻准备被拖入场景
* PlayerSpawnPoint - 玩家生成位置

推荐阅读:
l     HTC Vive之Unity3d开发日记@0
l      HTC Vive之Unity3d开发日记@1
l      HTC Vive之Unity3d开发日记@2
l      HTC Vive之Unity3d开发日记@3
l      HTC Vive之Unity3d开发日记@4
l      HTC Vive之Unity3d开发日记@5
l    HTC Vive之Unity3d开发日记@6
l      The Lab渲染器(CloudHu译)
l    Htc Vive VR手势识别插件教程


SteamVR Network Essentials插件教程.pdf

792.07 KB, 下载次数: 96

售价: 10 蛮牛币  [记录]

喜欢的买

评分

参与人数 2鲜花 +7 收起 理由
zyfforce + 5 支持一手
tommy2462 + 2 很给力!

查看全部评分


装B如风,常伴吾身!
回复

使用道具 举报

排名
7191
昨日变化

100

主题

129

帖子

804

积分

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

UID
159865
好友
9
蛮牛币
1009
威望
0
注册时间
2016-8-1
在线时间
393 小时
最后登录
2017-1-19

蛮牛译员

发表于 2016-8-3 09:28:39 | 显示全部楼层
支持!支持!

回复

使用道具 举报

7日久生情
1543/5000
排名
679
昨日变化

6

主题

245

帖子

1543

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
880
好友
9
蛮牛币
1987
威望
10
注册时间
2013-7-15
在线时间
381 小时
最后登录
2017-1-19
发表于 2016-8-3 10:26:00 | 显示全部楼层
大胸弟,你这背景辣眼睛啊

回复 支持 反对

使用道具 举报

7日久生情
2944/5000
排名
1209
昨日变化

31

主题

523

帖子

2944

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
133683
好友
41
蛮牛币
5926
威望
0
注册时间
2016-1-6
在线时间
578 小时
最后登录
2017-1-19

专栏作家蛮牛译员活力之星锦衣玉食

QQ
 楼主| 发表于 2016-8-3 10:36:42 | 显示全部楼层
huo3ge 发表于 2016-8-3 10:26
大胸弟,你这背景辣眼睛啊

这是艺术,你会明白的!

装B如风,常伴吾身!
回复 支持 反对

使用道具 举报

5熟悉之中
561/1000
排名
5098
昨日变化

13

主题

205

帖子

561

积分

Rank: 5Rank: 5

UID
1262
好友
3
蛮牛币
10166
威望
0
注册时间
2013-7-31
在线时间
139 小时
最后登录
2017-1-19
QQ
发表于 2016-8-3 14:35:07 | 显示全部楼层
大兄弟,能不能插件共享了呀。这么好的东西应该分享一下呀。

回复 支持 反对

使用道具 举报

排名
994
昨日变化

34

主题

406

帖子

1681

积分

Rank: 9Rank: 9Rank: 9

UID
93357
好友
1
蛮牛币
8822
威望
0
注册时间
2015-4-18
在线时间
479 小时
最后登录
2017-1-19

专栏作家认证开发者

QQ
发表于 2016-8-3 16:06:01 | 显示全部楼层
上次的背景是绿色的  现在搞个花
兄弟 你的艺术细胞怎么跟我不一样啊

回复 支持 反对

使用道具 举报

3偶尔光临
182/300
排名
6770
昨日变化

1

主题

26

帖子

182

积分

Rank: 3Rank: 3Rank: 3

UID
149352
好友
0
蛮牛币
2464
威望
0
注册时间
2016-5-21
在线时间
67 小时
最后登录
2016-11-23
QQ
发表于 2016-8-5 14:31:30 | 显示全部楼层
怎么参加基金池。。。。。

回复

使用道具 举报

5熟悉之中
535/1000
排名
3849
昨日变化

3

主题

82

帖子

535

积分

Rank: 5Rank: 5

UID
144553
好友
3
蛮牛币
1554
威望
0
注册时间
2016-4-5
在线时间
210 小时
最后登录
2017-1-19
发表于 2016-8-5 15:30:06 | 显示全部楼层
我的眼已瞎

回复

使用道具 举报

5熟悉之中
757/1000
排名
3132
昨日变化

6

主题

219

帖子

757

积分

Rank: 5Rank: 5

UID
45034
好友
1
蛮牛币
1888
威望
0
注册时间
2014-9-15
在线时间
234 小时
最后登录
2017-1-18
发表于 2016-8-8 11:07:55 | 显示全部楼层
有背景的楼主...

回复

使用道具 举报

3偶尔光临
182/300
排名
6770
昨日变化

1

主题

26

帖子

182

积分

Rank: 3Rank: 3Rank: 3

UID
149352
好友
0
蛮牛币
2464
威望
0
注册时间
2016-5-21
在线时间
67 小时
最后登录
2016-11-23
QQ
发表于 2016-8-11 21:59:14 | 显示全部楼层
我感觉这个插件不值这么多钱

回复 支持 反对

使用道具 举报

5熟悉之中
676/1000
排名
3737
昨日变化

0

主题

198

帖子

676

积分

Rank: 5Rank: 5

UID
151586
好友
0
蛮牛币
426
威望
0
注册时间
2016-6-11
在线时间
228 小时
最后登录
2017-1-19
QQ
发表于 2016-8-12 10:47:06 | 显示全部楼层
感谢分享!

回复

使用道具 举报

3偶尔光临
183/300
排名
9032
昨日变化

0

主题

61

帖子

183

积分

Rank: 3Rank: 3Rank: 3

UID
45286
好友
0
蛮牛币
207
威望
0
注册时间
2014-9-17
在线时间
56 小时
最后登录
2016-12-27
QQ
发表于 2016-8-16 23:40:10 | 显示全部楼层
学习学习
[发帖际遇]: 纯净水 发帖时在路边捡到 2 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

排名
15696
昨日变化

0

主题

15

帖子

48

积分

Rank: 1

UID
72194
好友
1
蛮牛币
6
威望
0
注册时间
2015-1-30
在线时间
13 小时
最后登录
2016-9-19
发表于 2016-8-18 11:00:00 | 显示全部楼层
Very Useful

回复

使用道具 举报

排名
32022
昨日变化

0

主题

6

帖子

12

积分

Rank: 1

UID
167668
好友
0
蛮牛币
7
威望
0
注册时间
2016-9-9
在线时间
2 小时
最后登录
2016-10-26
QQ
发表于 2016-9-9 06:56:56 | 显示全部楼层
awsome share

回复

使用道具 举报

排名
32022
昨日变化

0

主题

6

帖子

12

积分

Rank: 1

UID
167668
好友
0
蛮牛币
7
威望
0
注册时间
2016-9-9
在线时间
2 小时
最后登录
2016-10-26
QQ
发表于 2016-9-9 06:57:29 | 显示全部楼层
awesome share

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

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