欢迎来到这个由三部分组成的关于Unity 3D的博客系列的最后一篇文章。 在本系列中,我们将在Unity3D中使用丰富的控件创建一个简单的3D游戏。 第一部分介绍了如何设置Unity3D ,第二部分介绍了如何 使用C#控制Unity3D 。
在本系列的最后一篇文章中,我们将深入研究如何使用Unity3D将代码实际制作成一个简单的游戏。
让我们开始吧
让我们建立一些关卡,进行更多类似游戏的动作和最终目标。
首先,让我们添加一些要坚持的世界墙。 为此,我们将添加一堆多维数据集,并使用以前的实践来将它们缩放和定位。
让我们转到Unity编辑器中的“场景视图”。 单击“层次结构视图”(未选择任何内容),然后创建另一个空对象。 清除其变换(0,0,0),然后将此对象命名为“世界”。
然后,我们要清除一些不再需要的旧对象。 让我们删除为测试添加的白色立方体和球体。
现在,选择“ World
对象”,让我们添加一个多维数据集。 然后,将其位置和比例尺值更改为相等的位置0、2.5、0和比例尺10、5、1。这将使我们的墙长10个单位,高5个单位,宽1个单位。
现在,让我们的场景摄像机定位为具有自顶向下的视图。 单击“场景视图”右上角的绿色Y。
现在将墙旋转90度并将位置设置为-5、2.5、5。
然后让我们添加一堵墙的副本。 右键单击它,复制,然后将其X位置设置为5。
选择我们拥有的两堵墙,然后再次复制它们。 选中这两个选项后,我们将其Z位置值设为15。
仍然选择它们,再次复制,并将它们移到Z位置25和X位置-10。
接下来,我们将使用一个新工具将它们一起旋转。 在右上角有一组5个按钮。 我们将选择中间按钮,然后将Y旋转设置为0。
然后,我们将选择Wall(4)使其比例尺X比例尺30变长。
然后选择Wall(2)并将其比例X也设置为30。
然后选择Wall和Wall(3),复制它们,并将复制品设置为X位置-15。
然后选择Wall(2),复制它,并将其X位置设置为-25。
现在,使我们的速度与本课程更加友好。
在“层次结构视图”中选择“ Player
对象,然后在检查器编辑器中编辑值“前进速度”和“旋转速度”。 我喜欢5代表前进,50代表转向。
现在让我们为游戏添加一个目标。 让我们添加一个具有碰撞器的区域,该碰撞器在越过终点线时触发。
首先让我们添加完成区域。 我们将使用另一个多维数据集来设置边界。 在没有选择任何内容的层次结构视图中,通过右键单击3D对象->多维数据集添加多维数据集。 我们将其命名为Finish,将其位置设置为-10、2.5、15,并将其比例设置为5、5、5。
接下来,让我们给它新的材料。 在“资源”窗口中右键单击,然后单击创建->材质。 让我们将其Albedo设置为00B6006B,然后将其渲染模式更改为“透明”。 这使其绘制透明。
然后,我们需要编辑Finish Cube Collider
; 而不是添加到物理上,我们希望它禁用碰撞并仅触发。 我们通过选择Finish
对象来Finish
此操作,然后在Box Collider下的Inspector中,选中“ Is Trigger”。 这将使引擎触发OnTrigger
方法。
然后,将脚本添加到Finish对象中,以控制完成时发生的情况。 我们将其FinishController
,然后在MonoDevelop FinishController
其打开。 然后,我们添加一个新函数,然后在输入对象时进行记录。
void OnTriggerEnter(Collider collider){
Debug.Log( “Finished” );
}
现在按播放。 我们应该能够环游世界并找到Finish
立方体。 进入多维数据集后,我们应该能够打开控制台窗口并看到消息“ Finished”。
现在,将其设置为在显示屏上显示一条消息以向用户显示,而不是仅记录该消息。 我们将说他们完成了游戏,然后添加了一个按钮以重新启动游戏。
首先,我们需要将Text对象添加到我们的世界中。 转到“层次结构视图”,右键单击,然后单击“ UI =>文本”。 这将为我们的场景增加三件事:一是应在摄像机视口中显示的文本对象,二是Canvas(即GUI后面的设置和层次结构),三是EventSystem
,该事件系统可以引发和捕获事件GUI就像拖放一样。
在“场景视图”中很难处理文本,因此让我们切换到“游戏视图”。
现在,我们应该可以在右下角看到“新文本”字段。 让我们在层次结构视图中选择Text对象。 在检查器中,我们可以编辑文本。 将其位置设置为0、0、0,将宽度设置为500,将高度设置为500。将“文本”设置为“ You Finished”,格式为粗体,字体大小为80,颜色为红色。
现在,让我们打开FinishedController Script
并添加一些代码。 我们首先需要能够访问UI库。 因此,在脚本的顶部,我们需要使用UnityEngine.UI
进行添加,然后添加一个public Text finishedText
UnityEngine.UI
,以便可以访问我们的text元素。
现在回到编辑器。 让我们单击“完成”多维数据集对象,然后将“文本”对象拖到脚本的“完成文本”字段中。
现在,我们可以访问text元素。 要设置我们的文本,让我们在FinishedController
> Start function finishedText.text = “”
编写; 从某种意义上讲,这将在我们运行游戏时通过将文本保留为空白来隐藏文本。
现在,让我们OnTriggerEnter
函数,并添加代码以在文本中写上“ You Finished”。
现在按播放。 我们应该看到文本在游戏开始时就消失了。 一旦找到饰面并跨入多维数据集,它将为您提供完成的文字。
现在让我们做与文本相同的操作,但是这次添加一个按钮。 选择按钮,然后在检查器中,更改文本以重新启动游戏。 让我们将其保留在默认位置。
现在,让我们转到FinishController
并添加另一个公共UI元素public button restartButton
。
然后返回到“完成”对象的检查器。 让我们将按钮拖动到restartbutton
。
让我们在启动函数中添加一些代码。 我们将希望隐藏代码,以使我们无法一直看到它,还需要重置一些代码。 首先,我们可以添加restartButton.gameObject.SetActive(false)
隐藏,这将隐藏游戏对象。 然后在OnTriggerEnter
我们需要使用restartButton.gameObject.SetActive(true);
将其反转restartButton.gameObject.SetActive(true);
。
然后在FinishController
,添加一个名为RestartGame()
的公共void函数。 这将是我们在按钮on click
控制器中调用的函数。 同样在函数中,我们添加代码以在按下场景时重新加载场景,使用UnityEngine.SceneManagement;
在文件顶部添加另一个using语句UnityEngine.SceneManagement;
。 然后,将代码添加到RestartGame Function SceneManager.LoadScene(“Main Scene”);
。 它必须是您在字符串中调用场景的名称,否则它将更改您的场景,而不是重新加载它( Main.Scene
)。
现在,我们可以转到“层次结构视图”并选择“按钮”对象。 在检查器中,底部有一个On Click Controller
”。 我们只想单击+号并添加一个新的运行时。 然后,将Finish
游戏对象拖到下拉列表中,单击no
函数,然后选择FinishController
=> RestartGame
。
现在玩吧。
您现在应该可以玩到游戏结束。 触发完成后,您应该会看到“您已完成”和“重新启动游戏”按钮的消息。 如果您单击“重新启动游戏”按钮,它应该允许您再次播放。
包起来
结束!
现在,您应该能够在带有丰富控件的Unity3D中创建一个简单的3D游戏或应用程序。 请留下您的任何评论或问题。 谢谢阅读!
翻译自: https://www.javacodegeeks.com/2016/08/building-3d-simulations-unity3d-part-3.html