下面是演示环节 本节，我们实现《慕课英雄
2》网络版中场景收集物的制作 这里，我们已经在 Unity
编辑器中 打开了《慕课英雄 2》的 Game Scene 场景。
我们展开 Project 视图 在 Prefabs 文件夹中，我们把
PickUp_ Potion 预制件 拖入场景，作为场景中的血瓶收集物
我们稍微调高血瓶收集物的高度 [空白_录音]
血瓶收集物已经绑定了 Sphere Collider 组件 并且勾选了
Is Trigger 属性 我们仍然使用 Trigger
触发器来检测血瓶的收集 下面，我们给血瓶对象绑定
Self Rotate 脚本 并且调整它的自转速度
[空白_录音] 绑定
PickUpItemSimple_Potion 脚本
在添加 PickUp ItemSimple_Potion
脚本时，系统会自动添加 Photon View 脚本 这里，我们还要勾选
Pickup On Collide 属性 接下来，我们保存游戏场景
打开 File 菜单栏
选择 Build Settings，构建一个游戏项目
[空白_录音]
构建完毕后，我们双击启动一个游戏实例 作为测试用的客户端，接着
回到 Unity 编辑器，切换至 GameLobby 场景 执行游戏预览，作为另一个测试用的客户端
我们让这两个客户端进入游戏房间 准备并开始游戏。
进入战斗场景后 我们操纵其中一个客户端的玩家对象
移动到另一个玩家对象的身旁 对其进行射击
使另一个玩家的生命值减少 接着我们控制失血的玩家对象
使它靠近血瓶 该玩家对象收集血瓶后，血瓶消失
玩家对象的生命值得到增加 过一段时间后，血瓶会在原地重新生成
接下来，我们停止游戏的运行和预览 回到 Unity
编辑器 双击打开 PickUpItemSimple_Potion
脚本 我们讲解血瓶收集物的代码实现 我们修改了
Pun 提供的 PickupItemSimple
脚本 实现了血瓶收集物的脚本控制 脚本类的声明之前
有一个 RequireComponent (typeof (PhotonView)
)前缀 该前缀表明，该脚本绑定的游戏对象必须
同时添加 PhotonView 组件。
脚本包含多个公有字段 其中 HealthPoint
表示血瓶被收集后，玩家对象增加的血量 SecondsBeforeRespawn
表示血瓶收集后，再次生成前需要等待的时间 我们使用
Trigger 触发器 来检测是否有物体进入血瓶的收集范围
当有游戏对象进入血瓶收集范围时 onTriggerEnter 函数会被调用。
onTriggerEnter 函数中 other 保存了进入触发器范围的游戏对象
如果对象的标签不等于 Player
也就是说，和血瓶发生碰撞的对象不是玩家对象 我们就终止该函数的执行。
接着，我们判断 进入血瓶收集范围的玩家对象是否属于本地客户端
如果玩家对象属于本地客户端 我们调用 Pickup
函数，执行本地玩家对象的加血逻辑 如果玩家对象属于远端客户端，那么我们就不执行加血逻辑
下面，我们讲解 Pun PickupSimple
函数 首先 判断 RPC 请求是否由本地客户端发起
如果是 我们调用 GameManager
类的 LocalPlayerAddHealth 函数 实现本地玩家的加血逻辑。
其次 在 PunPickSimple 函数中，所有的客户端
都会使用 SetActive 函数禁用血瓶对象
表示该血瓶已经被收集 我们使用
Invoke 函数 延时调用 RespawnAfter
函数 [空白_录音] RespawmAfter
函数用于血瓶被收集后一段时间的 一段时间之后的再次生成。
在 RespawnAfter 函数中 我们使用
SetActive 函数启用血瓶对象，表示血瓶对象再次生成
下面，我们讲解 GameManager
脚本中 实现本地玩家加血逻辑的相关代码
在 localPlayerAddHealth
函数中 我们首先获得本地玩家对象的
PlayerHealth 组件 然后调用组件的
requestAddHP 函数 增加本地玩家的血量。
我们打开 PlayerHealth 脚本 查看 requestAddHP
函数 [空白_录音]
该函数通过本地客户端向 MasterClient 发起
RPC 请求 让 MasterClient 调用 AddHP
函数执行玩家的加血逻辑 在 AddHP
函数中 我们首先判断玩家是否死亡，或者满血
如果玩家已经死亡，或者玩家属于满血状态 我们不执行加血逻辑。
否则，我们增加玩家的血量 并且确保玩家的血量不会超过玩家的生命值上限
最后，MasterClient 通过
RPC 方法 调用所有客户端的 UpdateHP 函数
实现玩家血量信息的同步 最后，我们返回
Unity 编辑器 点击 Apply
将血瓶对象的修改应用到预制件 接着，我们在场景中添加若干个血瓶对象
[空白_录音]
[空白_录音] 添加完毕后，保存游戏场景
以上就是本节演示的全部内容