Advanced Programming: Unity Game Dev Course(4)-Closing the Loop

 

 

1.Alternate Singleton

主要介绍:

修改Singleton

 

具体实现:

之前Intermediate Programming: Unity Game Dev Courses(1)- Game Managers, Loaders, and the Game Loop教程写的抽象Singleton实际效果并不Single,摁空格键可以多次加载Main场景,如果其他场景里出现Singleton的对象,则会出现Bug,而不是保持一个Singleton。

我们新建Singleton模式的脚本在Utils文件夹下,命名为Manager

 

此例使用Singleton模式的有GameManager和UIManager,我们分别修改

 

 

2.Enemies

主要介绍:

由固定数量固定地点怪物,改成随机怪物生成(LINQ的使用)

生成多波怪物并且一波强过一波

 

具体实现:

1.随机怪物生成,和LINQ介绍

Monobehaviours文件夹下新建脚本MobManager用来生成怪物,并存入巡逻点

 

注意里面使用了LINQ,LINQ介绍

 

把写好的脚本绑到同名对象上

 

2.通过定义SpawnWave SO类型生成多波怪物

ScriptableObjects文件夹下新建脚本MobWave,为SO类型,定义怪物波相关数据。

 

在项目里新建两个MobWave类型,表示两拨怪


我们想要player砍死一波怪后生成下一波,直到所有波数的怪物都死了就提示player赢了。

实现思路是每波怪spawn时记录这波一共多少怪,每只怪死了就-1,直到为0.然后生成下一波怪,波数index-1,直到index达到最大值且spawn为0就通关。

怪物死亡触发,我们用UnityEvent。

下面先来修改MobManager

 

然后新建Event,在Events脚本里添加

 

最后在小怪脚本NPCController里修改当怪物死亡触发

 

把MobWave数据填入,运行后可看到效果

 

3.怪物一波比一波强

在MobWave SO类型中我们设定了一系列怪物相关数值,上面我们只是用了NumberOfMobs来respawn怪物,下面我们使用它关于怪物的生命值,伤害值,防御值来达成怪物一波强于一波。

首先MobWave SO的设置里第2波的各项数值应该大于第1波,然后我们把之前怪物的固定数值改成读取MobWave

在CharacterStats脚本里添加修改怪物属性的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
Unity中,代码是用来实现游戏逻辑和功能的关键部分。Unity支持使用C#或UnityScript(一种基于JavaScript的脚本语言)编写代码。 在Unity中,代码通常被组织在脚本文件中,这些脚本文件可以附加到游戏对象上。当游戏运行时,这些脚本将被执行,并且可以通过调用函数、访问变量等方式来实现游戏的各种功能。 以下是一些常见的Unity代码概念和功能: 1. MonoBehaviour:MonoBehaviour是Unity中所有脚本的基类,它提供了一些常用的函数,如Start()、Update()等。通过继承MonoBehaviour类,可以创建自定义的脚本,并将其附加到游戏对象上。 2. GameObject:GameObject是Unity中的基本对象,它代表了游戏场景中的一个实体。可以通过代码创建、修改和销毁游戏对象,以及访问其属性和组件。 3. 组件(Component):组件是附加到游戏对象上的模块化功能单元。例如,Transform组件用于控制游戏对象的位置、旋转和缩放;Rigidbody组件用于模拟物理行为;MeshRenderer组件用于渲染3D模型等。可以通过代码访问和操作组件。 4. 事件(Event):Unity中的事件系统允许在特定条件下触发代码。例如,当玩家点击按钮时,可以触发一个OnClick事件,然后执行相应的代码逻辑。 5. 协程(Coroutine):协程是一种特殊的函数,可以在一段时间内暂停和恢复执行。协程常用于处理复杂的异步操作,如延迟执行、动画序列等。 6. 资源管理:Unity提供了资源管理系统,可以加载、实例化和销毁各种资源,如模型、纹理、声音等。通过代码可以访问和操作这些资源。 关于Unity代码的更多详细信息和示例,请参考Unity官方文档和教程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值