欢迎继续我们的学习。

在之前的课程中我们提到过,对于游戏中的角色,最好是使用prefab预设体的方式在程序中生成,而不是直接放置在场景里面。

在这一课的内容中,我们将实现这一点。

打开Unity,在Project视图中右键单击Assets,创建一个新的文件夹,将其命名为_Prefabs。之所以加下划线,之前反复强调过,是为了将开发者自己添加的游戏资源和第三方插件中的游戏资源区分开。

从Hierarchy视图中将z@walk游戏对象拖到Project视图中的_Prefabs文件夹中,从而创建一个预设体,将其更名为zombieEnemy。然后从Hierarchy视图中删除该对象。

在Hierarchy视图中点击HItCubParent对象,选择ruined_house,在Inspector视图中点击Add Component,添加一个新的脚本,并将其命名为SpawnController。

然后在MonoDevelop中打开该脚本文件,并更改其中的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//1.导入UI相关的命名空间文件
using UnityEngine.UI;   public class SpawnController : MonoBehaviour {   //2.创建到敌人的引用
public GameObject zombie;   //3.创建到开始游戏按钮的引用
public Button btnStartGame;     // Use this for initialization
void Start () {    //4.添加点击事件的响应
btnStartGame.onClick.AddListener(StartInvoke);
} //5.处理开始游戏
void StartInvoke(){    }
}

按照注释行的数字编号来简单解释一下:

(1)导入跟UI相关的命名空间

(2)创建了一个GameObject对象,也就是对敌人对象的引用

(3)创建了对开始游戏按钮的引用

(4)添加了对开始游戏按钮点击事件的响应机制

(5)该方法将用于处理点击事件

注意到这里我们把默认提供的Update方法删除了,因为暂时不需要用到。

接下来回到Unity编辑器,把_Prefabs文件夹中的zombieEnemy预设体拖动到ruined_house对象的Spawn Controller组件的Zombie属性处,如图所示。

接下来我们需要创建一个按钮。

在编辑器中的中间区域切换到Game视图。

然后在Hierarchy视图中右键单击Canvas,选择UI-Button,从而添加一个按钮,将其命名为btn_StartGame。

将按钮的文本内容更改为Start Game,并作出以下设置:

(1)将btn_StartGame按钮的Image组件的Source Image设置为SF Window

(2)设置btn_StartGame按钮的Rect Transform的Width和height为500,200

(3)设置文本字体为Jupiter

(4)设置字体大小为80

(5)设置文本的Color为纯白色。

在Hierarchy视图中选择HitCubeParent下面的ruined_house对象,并将Spawn Controller组件的Btn Start Game属性设置为刚刚添加的btn_StartGame按钮对象。

接下来打开SpawnController.cs,并更改其中的StartInvoke方法,修改后的代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//导入UI相关的命名空间文件
using UnityEngine.UI;   public class SpawnController : MonoBehaviour {   //创建到敌人的引用
public GameObject zombie;   //创建到开始游戏按钮的引用
public Button btnStartGame;     // Use this for initialization
void Start () {    //添加点击事件的响应
btnStartGame.onClick.AddListener(StartInvoke);
}      //处理开始游戏
void StartInvoke(){    //1.每5秒调用一次SpawnEnemy方法
InvokeRepeating ("SpawnEnemy", 0f, 5f);
}   //在场景中生成敌人
void SpawnEnemy(){ //2.设置敌人的生成位置
Vector3 position = new Vector3 (Random.Range (-10f, 10f), Random.Range (-3f, 3f), Random, Range (-10f, 10f));    //3.在特定的位置生成敌人
Instantiate (zombie, position, Quaternion.Euler (0, 0, 0));
}
}

接下来按照注释行编号简单解释一下:

1.这里使用InvokeRepeating方法来重新调用SpawnEnemey方法。

关于InvokeRepeating方法的使用,大家可以在官方文档中搜索,https://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html

2.这里创建了一个Vector3类型的变量 ,从而设置了敌人的生成位置。

同样的,关于Vector3,可以在官方文档中查看

https://docs.unity3d.com/ScriptReference/Vector3-ctor.html

3.使用Instantiate方法在特定的位置生成敌人。

https://docs.unity3d.com/ScriptReference/Object.Instantiate.html

注意这里的旋转角度使用了Quaternion类型,在Unity中,使用Quaternion来代表旋转角度。

具体细节请参考官方文档:

https://docs.unity3d.com/ScriptReference/Quaternion.html

https://docs.unity3d.com/ScriptReference/Quaternion.Euler.html

现在我们可以回到Unity编辑器,点击工具栏上的Play按钮预览游戏效果。

当我们点击Start Game按钮后,就会有敌人出现在场景中,并开始之后的游戏逻辑。

如果一切顺利,我们已经成功的完成了本课所要学习的内容了~

答疑说明:

1.为了方便大家对课程中的问题提问,创建了一个问答社区。大家后续有开发相关的问题请到课程答疑专区提问http://icode.fun/ask/forum.php

想要更全面深入的了解虚拟现实行业、产品和技术现状,虚拟现实相关的开发知识,以及相关的工作机会,可以加入我的知识星球。

当然,如果囊中羞涩,也可以关注微信公众号vrlife,或头条号”寒酒仙“,大部分内容也会通过这些途径分享~

unity3d游戏开发第二版pdf_从零开始学基于ARKit的Unity3d游戏开发系列10相关推荐

  1. Unity游戏优化[第二版]学习记录6

    以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...

  2. Unity游戏优化[第二版]学习记录4

    Unity游戏优化[第二版]学习记录4 第4章 着手处理艺术资源 一.音频 1.导入音频文件 2.加载音频文件 3.编码格式与品质级别 4. 音频性能增强 二.纹理文件 1.纹理压缩格式 2.纹理性能 ...

  3. 华为C8650+浓颜V系列第二版正式发布,首次基于CM7深度第二次修订,强推~

    [ROM发布]华为C8650+浓颜V系列第二版正式发布,首次基于CM7深度第二次修订,强推~     浓颜.淡妆. Lesong--国内著名Android系统开发者 TA的每日心情 擦汗 2012-6 ...

  4. 3d数学基础图形与游戏开发第二版_游戏开发完整学习路线,都在这里了

    在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的. 平台与编程语言选 ...

  5. 《Android 游戏开发大全(第二版)》——6.4节角色扮演游戏

    本节书摘来自异步社区<Android 游戏开发大全(第二版)>一书中的第6章,第6.4节角色扮演游戏,作者吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区"异步社区& ...

  6. slam十四讲第二版 pdf_聊聊这两年学习slam啃过的书

    作者:Amber 来源:微信公众号|3D视觉工坊(系投稿) 「3D视觉工坊」技术交流群已经成立,目前大约有8000人,方向主要涉及3D视觉.CV&深度学习.SLAM.三维重建.点云后处理.自动 ...

  7. 工程图学及计算机绘图第二版答案,工程图学及计算机绘图习题集 第3版

    图书简介 本习题集与宋卫卫等主编的<工程图学及计算机绘图>(第3版)教材配套使用.本套教材是根据教育部高等学校工程图学教学指导委员会制定的"普通高等院校工程图学课程教学基本要求& ...

  8. matlab飞机大战小游戏(第二版)

    第一版链接:https://blog.csdn.net/slandarer/article/details/88025006 游戏截图: ------------------------ 游戏动图: ...

  9. slam十四讲第二版 pdf_先搞定SLAM,再谈如何抓住下一代互联网产业爆发点!

    在移动互联网大潮之后,自动驾驶.无人机.服务机器人等人工智能硬件会成为下一个产业爆发点,其中关键的技术之一就是动态定位和环境建模的SLAM技术! 在计算机视觉(Computer Vision)创立之初 ...

  10. 游戏中的数学与物理学 第二版_在数学课堂中适度开展游戏活动,可以提高课堂教学效率...

    [摘要]小学生是以无意注意为主的,而无意注意又受兴趣的影响,更何况数学是一门比较抽象的学科.因此,在数学课中适度引入游戏是很有必要的.基于学生的心理特征,学生需要游戏,恰当的游戏不仅能够调节课堂气氛, ...

最新文章

  1. 面试可能遇到的问题总结【二】
  2. 读书笔记:交易型系统设计的一般原则
  3. 编程语言优缺点_R编程语言的优缺点
  4. android 安装包 权限,确定Android中已安装应用程序使用的权限列表
  5. java 蓝桥杯算法训练 快速排序
  6. 计算机无论采用何种方式接入网络,自考计算机网络实用技术考核知识点之Internet的结构及其接入方式...
  7. ODrive踩坑(三)AS5047P磁编码器的ABI接口
  8. 小分子php蛋白,如何研究小分子抑制蛋白降解途径? - 分子生物 - 小木虫 - 学术 科研 互动社区...
  9. win8系统intellij输入中文问题
  10. 动态路由之OSPF(开放式最短路径优先协议)
  11. win10下安装Mysql5.7
  12. VMware 虚拟机
  13. android蓝牙协议栈bluedroid分析,安卓系统蓝牙协议栈 bluedroid 的使能
  14. 全面了解#中国加密艺术圈、元宇宙和就业
  15. 如何快速理清大型项目业务逻辑
  16. web网站加速之CDN技术原理
  17. 处理一份内心煎熬的工作有两种方法——只有一种是正确的
  18. ios 开发资源网 (from eagel)
  19. 机动目标运动分析——IMM篇
  20. 网页常用字体(CSS样式)记录:

热门文章

  1. WPS Office 11.1.0.10314 免费完整版
  2. hadoop、spark、hive、solr、es与YDB在车辆即席分析上的对比分析
  3. DotNetBar布局(一)
  4. gluster安装完全指南
  5. vmoptions默认配置_idea VM options参数优化
  6. 今日头条 mysql_今日头条的核心架构解析
  7. 简单的音频转文字的转换方法
  8. 个人记账软件测试初学者,好用的个人记账软件
  9. android javacv,【首发】AndroidStudio配置JavaCV环境
  10. vant中修改用户的头像