美文网首页unity修炼之路征服Unity3dUnity教程合集
Photon Unity Networking基础教程 3 游戏

Photon Unity Networking基础教程 3 游戏

作者: 浪尖儿 | 来源:发表于2016-10-26 08:44 被阅读412次

本节介绍了玩家将要玩的各种场景的创建。

每个场景将专门为特定数量的玩家,越来越大,适合所有玩家,给他们足够的空间移动。

在本教程的下一步,我们将实现逻辑来根据玩家数量加载正确的级别,并且为此将使用一个约定,每个级别将命名为以下格式:“Room for X”,其中X将代表玩家的数量。

主要内容

  • 第一个房间创建
  • Game Manager Prefab
  • 退出房间按钮Prefab
  • 其他房间创建
  • Build Settings 场景列表

第一个房间创建

  1. 首先创建一个新的场景,保存,命名为“Room for 1”
  2. 创建一个Cube然后命名为floor
  3. 把它放到0,0,0.这很重要,因为我们的逻辑系统将会在中心位置上方(0,x,0)生成玩家
  4. 缩放floor到20,0,20

这样的场景肯定能够玩了,但是需要一些墙壁将保持玩家在地板区域内。 只需创建更多的立方体和位置,旋转和缩放作为墙壁。下面是所有四个墙壁的位置和缩放,匹配floor对象。

walls

不要忘记保存Room for 1场景。

Game Manager Prefab

在所有情况下,用户界面的最低要求是能够退出房间。为此,我们需要一个UI按钮,但是我们还需要一个脚本来调用Photon来让玩家离开房间,所以让我们开始创建我们称之为Game Manager的prefab,第一个任务就是让玩家退出当前所在的房间。

  1. 创建一个新的C#脚本GameManager

  2. 创建一个空的游戏对象,命名为Game Manager

  3. 把GameManager脚本拖拽到Game Manager对象上

  4. 把Game Manager对象从场景Hierarchy拖拽到Assets里面转成prefab,它会变成蓝色

  5. 编辑GameManager脚本

  6. 替换为如下脚本

     using System;
     using System.Collections;
     using UnityEngine;
     using UnityEngine.SceneManagement;        
     
     namespace Com.MyCompany.MyGame
     {
         public class GameManager : MonoBehaviour
         {
             #region Photon Messages
             /// <summary>
             /// Called when the local player left the room. We need to load the launcher scene.
             /// </summary>
             public void OnLeftRoom()
             {
                 SceneManager.LoadScene(0);
             }
             #endregion
     
             #region Public Methods
             public void LeaveRoom()
             {
                 PhotonNetwork.LeaveRoom();
             }
             #endregion
         }
     }
    
  7. 保存GameManager脚本

所以,我们创建了一个公共方法LeaveRoom()。它的作用是明确地让内部玩家离开Photon Room,我们将它放在Public Methods区块。我们可能希望在稍后阶段实现更多功能,例如保存数据,或插入用户将离开游戏的确认步骤等。

根据我们的游戏要求,如果我们不在房间里,我们需要显示Launcher场景,所以我们要监听OnLeftRoom()回调并加载Lobby场景Launcher,它在Build Settings场景列表中被索引为0,我们将在本部分的Build Settings场景列表部分中设置。

但是为什么要做一个prefab呢? 因为我们的游戏需求意味着同一游戏的几个场景,需要重用这个Game Manager对象。在Unity中,重用GameObjects的最好方法是将它们转换为Prefabs。

下面,我们来创建一个UI按钮来调用GameManager LeaveRoom()方法。

退出房间按钮Prefab

同样,就像Game Manager一样,在我们将有许多不同的场景需要这个功能,提前计划是有意义的,使Button成为Prefab,这样我们需要在以后使用的话,我们可以重用它并在只一个地方修改它。

  1. 确保你在Room for 1场景中
  2. 使用unity菜单'GameObject/UI/Panel',创建一个UI Panel,命名为Top Panel
  3. 去掉Panel的Image和Canvas Renderer组件
  4. 设置垂直锚点为top,水平锚点为stretch,同时按住Shift和Alt键
  5. 设置RectTransform高度为50
  6. 右击Top Panel对象,添加UI按钮,命名为Leave button
  7. 选择Leave button的文字子节点,设置文本为Leave Game
  8. 把按钮的OnClick时间连接到Game Manager实例的Leave Room函数
ButtonOnclickLeaveRoom.png
  1. 把Leave button也转变成prefab
  2. 保存场景,保存工程

其他Room创建

我们已经创建好了一个房间,我们可以复制3份,然后给它们合适的名字。

  • Room for 2
  • Room for 3
  • Room for 4

使用下面的position,rotation和scale参数设置场景。

Room for 2

Floor缩放: 36,1,36

Roomfor2.jpg

Room for 3

Floor缩放:50,1,50

Roomfor3.jpg

Room for 4

Floor缩放:60,1,60

Roomfor4.jpg

Build Settings场景列表

当发布时,我们需要在构建设置中添加所有这些场景,以便Unity在构建应用程序时包括它们。

  1. 通过"File/Build Settings"打开Build Settings
  2. 把所有的场景拖拽进来,Launcher场景必须是第一个,因为Unity默认会加载第一个场景
BuildSettingsScenes.png

现在我们做好了基本的场景设置,我们在下一部分继续。

原文

http://doc.photonengine.com/en-us/pun/current/tutorials/pun-basics-tutorial/game-scenes

相关文章

网友评论

    本文标题:Photon Unity Networking基础教程 3 游戏

    本文链接:https://www.haomeiwen.com/subject/kbjduttx.html