虚拟现实游戏开发:构建物品商店界面

在前一天,在游戏结束画布上创建了一个商店按钮,以便购买增强道具。目前,该按钮尚无任何功能,因为尚未创建物品商店场景。今天,目标是:

  • 创建一个新的场景,用于购买升级
  • 创建物品商店的用户界面

步骤1:创建物品商店场景

理论上,创建物品商店场景有多种方法。不必为此创建一个新场景。实际上,可以将其作为同一个场景的一部分,并使其成为另一个画布。然而,很少使用场景,所以抓住这个机会来尝试。

在项目中,当前场景被称为"scene",让将其重命名为"main"。创建一个名为"Scenes"的新文件夹,并将"main"场景放入其中。

接下来,通过按Ctrl + D复制"main"场景,并将其命名为"shop"。选择复制是因为希望保留很多内容。

现在在"shop"场景中,除了以下内容外,删除所有内容:

  • GvrEditorEmulator - 这是用来模拟Google Cardboard的模拟器。
  • Player - 真正需要的是"Game Over Camera"和"GvrRticlePointer",其余的不需要。删除Player内部的所有内容,除了"Game Over Camera"。
  • Complex Standard 1 - 这是玩家开始时跟随的路径,将保留它作为环境场景。
  • Event System - 这个游戏对象托管了"Event System"脚本,允许代码检测事件,如onMouseEnter、onMouseDown等。
  • GvrEventSystem - 类似于Event System,这是Google的Event System实现,允许事件系统检测Cardboard相关的输入,如注视作为指针事件(onPointerEnter、onPointerExit等)。

其他所有内容都不需要,并将根据需要重新添加,但这些将是目前需要的核心组件。

现在,如果还没有保存场景,请保存。

在为游戏创建UI之前,让将场景添加到构建设置中。有了这个变化,可以从"main"场景访问"shop"场景。

在"main"和"shop"中,转到"File > Build Settings",然后点击"Add Open Scene"。确保"main"是0,"shop"是1,必要时重新排列它们。

应该有类似这样的设置:

为什么按这个顺序添加场景很重要?可能会记得在前一天的"GameOverCanvasController"中,有这些代码片段:

public void ClickRestartButton() { SceneManager.LoadScene(0); } public void ClickShopButton() { SceneManager.LoadScene(1); }

当点击重启按钮时,"SceneManager"加载场景0,即"main"场景,当点击商店按钮时,加载场景1,即现在的"shop"场景。

现在,如果玩游戏并点击"Shop Button",将被带到"shop"场景。

步骤2:为物品商店创建UI

回到"shop"场景,是时候为"Item Shop"制作新的画布了。为了节省一些工作,让复制现有的"Game Over Canvas"。

从"Prefabs"文件夹中拖动"Game Over Canvas",然后将其重命名为"Item Store Canvas"。

删除游戏对象中的"Game Over Canvas Controller"脚本,将制作一个新的。

将"Game Over Panel"重命名为"Item Store Panel"。

删除"Item Store Panel"中的所有子游戏对象。

值得注意的是,有一些特殊属性:

  • 在"Item Shop Canvas"中的"Canvas"组件中,"Render Mode"是"World Space",否则它不会出现在VR中。
  • 在"Item Shop Panel"中,向游戏对象添加"Gvr Pointer Graphic Raycaster"脚本。这将确保可以与UI元素进行交互。

当前的结构看起来像这样:

在创建UI之前,这是想要制作的:

  • 有11个UI组件:
  • 3个文本用于力量提升
  • 3个力量提升的图标(它们是力量提升游戏对象)
  • 3个用于购买力量提升的按钮
  • 显示拥有的硬币数量的文本
  • 一个将带回游戏的按钮

它们在层级结构中看起来像这样:

在这一点上,想说应该对创建UI感到舒适,所以将快速通过这部分。

注意:使用的位置可能会有所不同,这取决于相机设置在哪里,所以将省略这部分,并在某些点上留给自己调整。

将"Item Store Canvas"更改为具有150的宽度,

创建3个新的文本UI游戏对象并将其子化到"Item Store Panel",这些将是游戏中的标题。将字体大小更改为18,将缩放值更改为(0.5, 0.5, 0.5)。

将宽度更改为120,高度更改为。从那里,调整Pos X和Pos Y,使它们看起来像上面的图片。

对于3个图标,使用了位于Prefab中的增强道具预制件。将它们拖入场景,使它们成为"Item Store Panel"的子项,并移动它们的位置,以便可以正确地看到它们。值得一提的是,如果火箭的粒子效果离得太远,它就不会显示,所以不得不将它移动得比其他游戏对象更近一些。

创建3个按钮UI游戏对象并将其子化到"Item Store Panel",这些将是用来购买升级的购买按钮。将缩放更改为(0.2, 0.2, 1),宽度更改为160,高度更改为30。

创建一个按钮UI游戏对象并将其子化到"Item Store Panel",这将是开始游戏的按钮,缩放是(0.5, 0.5, 0.5),宽度是160,高度是。

创建一个文本UI游戏对象并将其子化到"Item Store Panel",将其命名为"Coin Text",这将用于显示拥有的硬币数量。

就这样,现在将拥有一个像制作的那样的UI。

第98天结束

随着新的物品商店UI的创建,是时候结束这一天了!

  • 为物品商店创建了一个新的场景。
  • 为物品商店场景创建了UI。

在这里停下来,因为要继续将UI与代码集成,将不得不创建一些数据模型,定义增强道具变得有多强,它们花费多少,以及拥有它们的等级,这本身就是一个单独的话题。

下一篇文章将会很大,所以请期待它!

第97天 | 第100天的VR | 第99天

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485