unity修炼之路征服Unity3dUnity教程合集

Photon Unity Networking基础教程 3 游戏

2016-10-26  本文已影响412人  浪尖儿

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

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

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

主要内容

第一个房间创建

  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份,然后给它们合适的名字。

使用下面的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

上一篇 下一篇

猜你喜欢

热点阅读