本节介绍了玩家将要玩的各种场景的创建。
每个场景将专门为特定数量的玩家,越来越大,适合所有玩家,给他们足够的空间移动。
在本教程的下一步,我们将实现逻辑来根据玩家数量加载正确的级别,并且为此将使用一个约定,每个级别将命名为以下格式:“Room for X”,其中X将代表玩家的数量。
主要内容
- 第一个房间创建
- Game Manager Prefab
- 退出房间按钮Prefab
- 其他房间创建
- Build Settings 场景列表
第一个房间创建
- 首先创建一个新的场景,保存,命名为“Room for 1”
- 创建一个Cube然后命名为floor
- 把它放到0,0,0.这很重要,因为我们的逻辑系统将会在中心位置上方(0,x,0)生成玩家
- 缩放floor到20,0,20
这样的场景肯定能够玩了,但是需要一些墙壁将保持玩家在地板区域内。 只需创建更多的立方体和位置,旋转和缩放作为墙壁。下面是所有四个墙壁的位置和缩放,匹配floor对象。
不要忘记保存Room for 1场景。
Game Manager Prefab
在所有情况下,用户界面的最低要求是能够退出房间。为此,我们需要一个UI按钮,但是我们还需要一个脚本来调用Photon来让玩家离开房间,所以让我们开始创建我们称之为Game Manager的prefab,第一个任务就是让玩家退出当前所在的房间。
创建一个新的C#脚本GameManager
创建一个空的游戏对象,命名为Game Manager
把GameManager脚本拖拽到Game Manager对象上
把Game Manager对象从场景Hierarchy拖拽到Assets里面转成prefab,它会变成蓝色
编辑GameManager脚本
-
替换为如下脚本
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 } }
保存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,这样我们需要在以后使用的话,我们可以重用它并在只一个地方修改它。
- 确保你在Room for 1场景中
- 使用unity菜单'GameObject/UI/Panel',创建一个UI Panel,命名为Top Panel
- 去掉Panel的Image和Canvas Renderer组件
- 设置垂直锚点为top,水平锚点为stretch,同时按住Shift和Alt键
- 设置RectTransform高度为50
- 右击Top Panel对象,添加UI按钮,命名为Leave button
- 选择Leave button的文字子节点,设置文本为Leave Game
- 把按钮的OnClick时间连接到Game Manager实例的Leave Room函数
- 把Leave button也转变成prefab
- 保存场景,保存工程
其他Room创建
我们已经创建好了一个房间,我们可以复制3份,然后给它们合适的名字。
- Room for 2
- Room for 3
- Room for 4
使用下面的position,rotation和scale参数设置场景。
Room for 2
Floor缩放: 36,1,36
Room for 3
Floor缩放:50,1,50
Room for 4
Floor缩放:60,1,60
Build Settings场景列表
当发布时,我们需要在构建设置中添加所有这些场景,以便Unity在构建应用程序时包括它们。
- 通过"File/Build Settings"打开Build Settings
- 把所有的场景拖拽进来,Launcher场景必须是第一个,因为Unity默认会加载第一个场景
现在我们做好了基本的场景设置,我们在下一部分继续。
原文
http://doc.photonengine.com/en-us/pun/current/tutorials/pun-basics-tutorial/game-scenes