‫如果我们看一下水果忍者的用户界面, 我们可以看到我们有一个井, 一个分数, 一个最好的分数, 然后我们有一个计时器,
‫运行起来｡
‫当然, 这也是我们需要在游戏中加入的内容｡
‫因此, 让我们先创建一个新对象, 并将其命名为game manager｡
‫在这里我们添加一个脚本｡
‫因此, 让我们创建一个新脚本并调用它, 然后将新脚本分配给该游戏管理器｡
‫因此, 让我们在scripts文件夹中创建一个新脚本, 并调用该游戏管理器｡
‫现在, 让我们将游戏管理器拖动到游戏管理器脚本中｡
‫现在, 让我们将游戏管理器脚本定向到我们的游戏管理器并对其进行编辑｡
‫现在我们的游戏管理员要做的是计算比分｡
‫因此, 让我们创建一个方法和几个变量｡
‫首先, 我们需要一个整数, 它将具有分配给它的分数值, 然后我们将需要一个文本对象｡
‫为了处理文本, 我们需要添加Unity引擎启动UI｡
‫因此, 命名空间､ 统一引擎､ UI｡
‫现在我们可以访问文本, 类, 公共文本, 我们将把它称为score text, 我们来创建一个方法,
‫它可以简单地增加我们的分数｡
‫所以public void, 增加分数, 现在让我们把分数增加,
‫比如说每次有人调用这个方法或者任何类调用这个方法时增加2.
‫所以增加两个｡
‫然后我们还要设置乐谱文本｡
‫所以每次分数增加时, 我们都要更新文本变量, 当然, 也要更新｡
‫所以得分为字符串｡
‫好了, 现在让我们保存该脚本, 然后返回到Unity｡
‫我们将创建一个新对象, 并调用该UI｡
‫因此, 让我们更改游戏对象的名称｡
‫让我们称之为UI｡
‫现在, 我们在这里添加一个UI文本, 它将创建画布, 我将把画布拖到UI游戏对象中｡
‫我在这里要用到的是画布标量没有固定的像素大小, 而是随着屏幕大小而缩放｡
‫我们可以将分辨率设置为800乘以800或19､ 20乘以1080, 您可以选择任何分辨率｡
‫所以现在, 我们只需要文本｡
‫让我们看看它现在是什么样子的, 我们看不到文本, 所以让我们来管理它｡
‫让我们回到画布上｡
‫你在这儿啊
‫你可以看到我们的文本现在甚至不在我们的游戏里面｡
‫让我们来看看, 我们的UI元素应该被重置, 现在我们可以改变文本的位置｡
‫我希望我的分数文本在我的用户界面的左上方｡
‫让我们放大一点, 把矩形变换到左上角｡
‫这将是锚预设｡
‫所以这就意味着从这个角度对X和Y的值进行了计算｡
‫所以我们就选零零吧｡
‫你可以看到我们的文字现在在左上角｡
‫例如, 理想的值是100和-75｡
‫也许我们也可以改变文本的大小｡
‫这就是乐谱文本｡
‫我们可以在这里输入一个值, 比如0, 然后更改它的名称｡
‫所以我把它叫做分数文本｡
‫当然, 现在的字体有点太小了, 所以我们来改变一下｡
‫我们就说120吧｡
‫正如你现在所看到的, 它消失了｡
‫所以我们再也看不到号码了｡
‫这和溢出有关｡
‫所以如果你添加水平和垂直溢出, 它会做的是, 无论什么都会显示数字｡
‫现在, 无论这里的大小如何, 例如, 对于这个物体的宽度和高度都是｡
‫这就是它现在的样子｡
‫也许这不是玩它的最佳位置｡
‫也许我们把它拖上去吧｡
‫那么这个宽零的位置, 我想应该是左右｡
‫好吧, 我知道了
‫现在, 让我们更改文本的颜色｡
‫让我们把它橙子或橙色的颜色｡
‫就像这样
‫现在让我们来看看｡
‫没有｡
‫当然, 我们的背景看起来不再那么好了｡
‫我们需要改变游戏的背景｡
‫但至少我们有了乐谱文本｡
‫现在让我们复制这段文字, 并称之为高分文字｡
‫现在让我们来改变高分文本｡
‫把它拖到底部, 输入best colon zero｡
‫如你所见, 这当然是太大了｡
‫所以我们把它缩小到36个｡
‫看起来好多了｡
‫所以在游戏中看最好的零｡
‫好吧, 现在, 让我们也许改变我们的主摄像头的背景｡
‫所以现在｡
‫这个颜色, 这个橙子, 也许现在这个会看起来更好｡
‫没关系的, 我很好
‫我觉得现在这样比较好｡
‫现在, 为了使我们的数字看起来更酷一点, 我们可以做的是添加一个轮廓, 这样你就可以在这里进入UI｡
‫添加组件, 然后是UI效果, 然后你会在这里找到一个轮廓, 它会给你的游戏添加一个轮廓,
‫这样你就可以或者给你的文本添加一个轮廓, 你可以这样做｡
‫正如你现在看到的, 你可以创建一个边缘, 一个轮廓边缘到你的分数文本, 你的高分文本｡
‫在这里, 如果主摄像头是明亮的颜色, 白色的会有意义, 那么黑色的会看起来更好｡
‫比如说, 如果它是这种颜色, 那么也许分数应该会有影响｡
‫颜色为黑色｡
‫所以我认为, 看起来比高分的文字应该得到一个以及好得多｡
‫因此, 让我们添加UI效果大纲｡
‫你现在可以看到, 他们看起来好多了｡
‫好了, 现在让我们在代码中实现score文本｡
‫我们的游戏管理器已经需要一个分数文本, 这样我们就可以把它拖到那里, 我们当前的分数将是零｡
‫例如, 如果我们将其设置为5, 让我们看看会发生什么｡
‫实际上, 我们设为5个残局｡
‫正如你所看到的, 什么都没有发生｡
‫所以我们就需要加评分｡
‫这就意味着我们需要调用这个方法, 在fruit脚本中, 这个增加分数的方法.
‫所以每当我们做一个水果切片, 这就意味着我们得到了一个额外的分数｡
‫因此, 为了做到这一点, 让我们添加类型为game
‫manager的find对象, 并增加分数｡
‫所以每次我们切水果的时候, 分数都会增加.
‫好吧, 我会的
‫现在我们来测试一下｡
‫我们开始吧｡
‫把水果切开｡
‫如你所见, 我们的分数每次都增加2分｡
‫也许我们想根据我们切过的水果, 得到不同的值, 目前只切橙子,
‫但也许我们也想切其他物体｡
‫例如, 我们还希望有不同的值｡
‫所以现在我们在这里分配三个｡
‫当然, 我们会得到一个错误, 因为游戏管理器本身并不知道这三个人应该做什么.
‫所以我们现在在这里加上一个int点, 而不是说score加2加等于, 我们只是把它增加任何传递的点｡
‫所以在我们的例子中, 它将是三个｡
‫所以每次我们跑或者切水果, 我们都会得到三分｡
‫如果这是真的, 让我们快速检查一下｡
‫是这样｡
‫我们切水果吧｡
‫就这样
‫我们得三分｡
‫好吧, 我会的
‫现在, 接下来, 我们需要添加一个停止游戏的功能, 因为现在我们可以无休止地玩游戏,
‫并且会不断地获得积分, 而且对任何行为都没有惩罚｡
‫当然, 我们想在水果忍者中改变这一点｡
‫这通常是由炸弹或定时器完成的｡
‫所以如果计时器超时, 游戏就会停止｡
‫或者如果我们击中了炸弹, 计时器也会停止｡
‫所以让我们把炸弹加入到我们的游戏中｡
‫那么我们先去现场查看一下｡
‫让我们打开模型文件夹｡
‫我们有炸弹｡
‫好了, 现在我们进入场景视图, 把炸弹拖到游戏中｡
‫事实上, 它太大了, 所以我们再把它扔掉吧｡
‫我们先删除炸弹, 然后转到炸弹模型｡
‫现在, 让我们将比例因子更改为0｡ 3并应用它｡
‫现在我们可以把炸弹拖进去了｡
‫而且我觉得那个尺寸要好得多｡
‫现在, 让我们添加一些组件｡
‫例如, 一个物理2D, 刚体和一个物理DX盒或实际上圆形对撞机｡
‫给你, 这个应该没问题｡
‫好吧, 环形对撞机很合适, 我想｡
‫好吧, 如果我们撞到了什么？
‫我们想暂停游戏然后在屏幕上显示游戏或者类似的东西｡
‫所以让我们给炸弹添加一个脚本｡
‫所以我将添加一个新脚本, 我将把它称为一个炸弹脚本, 或者实际上就是炸弹｡
‫现在让我们在这里打开炸弹脚本｡
‫我们将在DX方法中添加一个on trigger enter｡
‫所以每当我们击中炸弹时, 我们想看看刀刃是否击中了我们｡
‫所以叶片b等于碰撞点｡
‫实际上, 不是这个碰撞, 是这里的那个碰撞, 碰撞点得到了部件和刀片｡
‫这意味着, 我们已经看到了代码, 但这意味着, 如果被触发或击中的物体触发了我们,
‫如果那是刀片, 那么做点什么｡
‫如果不是剑的问题, 那就回来｡
‫所以如果不是B返回, 而是B, 那么我们要找到博弈管理器类型的对象｡
‫然后我们要访问游戏管理器并从它那里调用一个方法｡
‫比如说炸弹袭击｡
‫所以每当我们遇到这个问题时, 它就会抱怨没有方法被调用, 我们会在游戏管理器中找到这个方法,
‫或者我们需要创建这个方法和游戏管理器｡
‫所以我们创建一个方法void on bomb hit, 它应该是公共的, 这样我们就可以从外部访问它了｡
‫当然, 就目前而言, 姑且说撞是撞｡
‫所以调试日志炸弹击中｡
‫所以让我们保存该脚本｡
‫让我们也保存炸弹脚本｡
‫现在, 我们看到错误不再存在｡
‫现在让我们来测试一下｡
‫所以我们回去吧｡
‫实际上, 在添加我们时, 让我们将炸弹脚本拖到脚本文件夹中｡
‫现在让我们来运行这个游戏看看我是否击中了炸弹｡
‫实际上, 炸弹移动得太快了, 所以我要把它推到顶部, 这样我现在能做的就是,
‫关闭它｡
‫地心引力｡
‫假设重力为零｡
‫看看会发生什么｡
‫而且我可以拖动或击中炸弹｡
‫实际上, 什么也不会发生, 当然, 作为我们的触发器就像环形对撞机中没有触发器一样｡
‫现在让我们再一次看看现在发生了什么｡
‫如你所见, 鲍勃的名字叫"每次我穿过炸弹".
‫好吧, 我会的
‫现在我们可以把重力标度再次改为1｡
‫那只是为了测试｡
‫现在我们的炸弹应该能用了｡
‫现在, 我们想做的就是我们想做的｡
‫一旦发生这种情况, 就停止游戏｡
‫所以我们可以说时间点的时间刻度等于零｡
‫这只会让游戏停止｡
‫所以这一次, 时间刻度一般是一个功能, 可以让你降低你的游戏速度｡
‫所以零意味着根本没有速度, 也就是说没有运动, 你就停止了游戏｡
‫一种是你有正常的速度｡
‫所以时间刻度1是默认值, 时间刻度0是, 比如说, 停止游戏｡
‫我们先把这个脚本保存起来, 然后再检查一下, 看看我能不能足够快地完成这个任务.
‫为了停止比赛｡
‫如你所见, 我冲了过去, 我的炸弹实际上是我的水果停止了, 炸弹也停止了｡
‫好了, 现在我们只有一个肿块｡
‫所以这一次碰撞是可以的, 但我们也想随机产生炸弹｡
‫为了做到这一点, 我们需要回到我们的赞助商游戏对象｡
‫所以我们的剧本最好准备好｡
‫我们来看看赞助商的剧本｡
‫而目前我们只有一种果实可以产卵, 所以我们只能产卵一种果实｡
‫在这个例子中, 它是一个橙子, 但我们想要的是能够产卵橙子, 产卵香蕉,
‫产卵任何我们想到的, 也产卵炸弹｡
‫为了做到这一点, 我们需要把这个fruit变成一个数组, 也就是游戏对象的数组.
‫所以让我们加上方括号, 把它改成要生成的对象, 因为它不只是水果, 它是一般的对象｡
‫当然, 这里我们会得到一个错误, 因为我们试图生成一个简单的水果, 而这个方法不再可用了｡
‫所以我们要做的就是随机创建一个游戏对象, 要么是一个凹凸, 要么是另一个水果.
‫然后我们简单地说, 好的, 生成它｡
‫所以让我们开始吧｡
‫让我们创建一个游戏对象, 调用G0并将其设置为NULL, 这样我们就得到了一个随机值.
‫因此, 让我们创建随机值范围｡
‫我们想随机地创造不同种类水果或不同种类的游戏对象｡
‫例如, 炸弹应该比其他东西更少地产卵｡
‫所以我在这里要说的是, 如果P小于10, 因为这个值可以在0和100之间｡
‫所以如果低于10, 我就产生一个凸点｡
‫因此, 碰撞的机会大约是10%或债券碰撞产生的机会｡
‫所以我会说Goh是在零位置上生成的对象｡
‫所以现在我当然得处理这个了｡
‫所以我需要在0的位置设置凹凸, 否则, 我想设置go with
‫objects to spawn, 随机范围介于1和对象to spawn长度之间｡
‫所以这就行了, 有10%的几率｡
‫我要制造一个凸起｡
‫有90%的几率, 我将创造出一种不同的水果｡
‫当然, 这里我需要使用大括号, 因为这是一个索引, 我们要把它赋给它｡
‫所以, 再一次, 10%的概率, 它是一个碰撞,
‫90%的概率, 它是从我们指定的所有其他要繁殖的对象中随机产生的｡
‫当然, 现在我们不再实例化一个水果来产卵了｡
‫我们实例化游戏对象｡
‫当然, 你可以创建一个对象来繁殖, 你称之为水果来繁殖｡
‫当然, 你可以说公共游戏对象bump,
‫然后你可以在这里赋值bump现在你可以把gold改成Bob.
‫那倒是个选择
‫当然, 你的范围是从零到某个地方｡
‫这是另一个选择｡
‫也许这是一个更直观的选择, 因为凹凸是一种非常特殊的水果, 无论我们添加什么,
‫我们都可以添加｡
‫因为另一种方法, 我刚才给你们展示的, 我们必须小心, 把凹凸点,
‫分配到第一个点.
‫我们知道这一点, 因为我们已经创建了代码｡
‫但如果其他人开始运行代码或开始编辑代码, 他可能会对此感到困惑｡
‫好吧, 我会的
‫所以现在我们确定, 好的, 这里是鲍勃｡
‫现在,
‫让我们保存它, 然后返回到Unity｡
‫在那里你会看到发生了什么｡
‫所以我们的赞助商应该得到水果产卵｡
‫现在, 只有橙子｡
‫几秒钟后, 它应该从果实产卵变成物体产卵和碰撞｡
‫好吧, 我会的
‫因此, 有凹凸和对象产卵｡
‫我只想说, 现在, 它是一个我想要生成的对象｡
‫现在让我们回到我们的预制屋, 把橙子拖进去.
‫所以直接在这里产卵｡
‫现在说说炸弹｡
‫实际上, 我们还没有炸弹预制件｡
‫我们来做一个炸弹预制件｡
‫把炸弹拖到预制件文件夹里｡
‫现在我们把炸弹拖到观测器上｡
‫为了测试这一点, 也许我们应该将此处的值设置为50, 这样出现凸点的概率为5050｡
‫所以就看是不是有疙瘩或者是疙瘩进来一般｡
‫好吧, 我会的
‫所以有一个颠簸, 橘子, 炸弹, 橘子, 炸弹｡
‫如果我撞到了一个或一个凸起, 嗯, 我撞到了外面, 但是我撞到了凸起, 现在, 砰, 游戏停止了｡
‫现在让我们看看, 如果我们, 让我们把它设回10｡
‫这样好多了
‫现在炸弹出现的几率只有10%｡
‫当然可以了｡
‫如你所见, 橙子, 橙子, 橙子｡
‫然后我们一直都能得分｡
‫在某个点上, 一个炸弹可能会出现｡
‫到目前为止, 还没有｡
‫事实上是的
‫来吧, 来吧
‫炸弹在哪里？
‫正如你所见, 这就是机会, 对不对？
‫机会就是机会｡
‫所以我可能会在这里得到大量的橙子｡
‫嗯, 概率很低, 而且有炸弹｡
‫好极了｡
‫好吧, 花了不少时间｡
‫如你所见, 我已经杀了40个橙子才拿到一个炸弹, 也就是说有10%｡
‫好吧, 是10%｡
‫随时都可能发生｡
‫而它只发生在差不多40个甚至50个之后, 我想甚至50个橙子, 因为我没有击中每一个｡
‫好吧, 我会的
‫所以我想说, 让我们去下一个视频, 我们将看到如何让游戏结束, 并重新进入我们的游戏.
‫那到时见｡