第32课(2课时) 异星猎手:游戏管理器设计详解_第1页
第32课(2课时) 异星猎手:游戏管理器设计详解_第2页
第32课(2课时) 异星猎手:游戏管理器设计详解_第3页
第32课(2课时) 异星猎手:游戏管理器设计详解_第4页
第32课(2课时) 异星猎手:游戏管理器设计详解_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

作者:李永亮第27课(2课时)异星猎手:游戏管理器设计详解基于Unity引擎实现游戏状态管理的核心逻辑010203040506目录脚本修改准备BombBot脚本扩展Player脚本调整GameManager类设计GameManager逻辑完善游戏管理器部署01脚本修改准备为后续事件定义与触发做好前期环境配置与代码引用准备123…定位预制体并打开脚本,为添加事件变量与方法提供编辑入口打开BombBot脚本定位预制体打开脚本进入编辑在Project窗口找到Assets\Prefabs路径下的bomb_bot1预制体并单击选中在Inspector窗口点击BombBot组件右侧三点图标,选择EditScript打开脚本脚本开发工具自动启动并加载BombBot.cs,等待代码编辑操作导入事件相关命名空间,为UnityEvent类型变量声明提供语法支持引用UnityEngine.Events检查命名空间添加引用验证有效性在脚本开头确认是否存在usingUnityEngine.Events;引用语句若未引用则在usingUnityEngine;下方添加该命名空间引用确保引用语句无语法错误,为后续UnityEvent使用扫清障碍在BombBot类中定义事件变量,构建敌人摧毁信息的传递通道声明OnEnemyDestroy事件定义变量类型添加注释说明确认变量作用域在类内声明publicUnityEvent类型的OnEnemyDestroy变量为变量添加//敌人被摧毁时触发的事件注释增强可读性确保变量为public以便外部脚本可绑定事件监听02BombBot脚本扩展完善敌人摧毁事件触发逻辑,确保对象销毁时事件可靠执行010203重写Unity生命周期方法,利用对象销毁时机触发自定义事件添加OnDestroy方法声明方法方法作用代码位置在BombBot类中添加voidOnDestroy(){}方法框架明确该方法会在对象销毁前被Unity自动调用的特性将方法放置在类内合适位置,建议在现有方法之后在OnDestroy方法内调用事件,完成敌人摧毁信息的对外传递触发OnEnemyDestroy事件调用Invoke处理空引用测试逻辑在OnDestroy方法中添加OnEnemyDestroy.Invoke();语句可添加if(OnEnemyDestroy!=null)判断避免空指针异常保存脚本后在Unity中运行场景,验证事件触发时机123…确保代码变更生效,为后续功能联调提供基础保存脚本修改快捷键保存返回Unity检查编译状态使用Ctrl+S快捷键保存当前脚本修改内容切换回Unity编辑器,等待脚本自动编译完成查看Console窗口确认无编译错误提示03Player脚本调整为主角死亡事件添加触发逻辑,构建游戏失败状态的触发条件定位并加载主角控制脚本,为死亡事件声明与触发做准备打开Player脚本找到脚本文件打开编辑等待加载在Project窗口Assets\Script路径下找到Player.cs脚本双击脚本文件在开发工具中打开并进入编辑状态等待脚本完全加载,准备进行代码修改操作在Player类中定义死亡事件变量,为游戏失败逻辑提供触发点声明OnDead事件引用命名空间定义事件变量添加注释确认脚本开头存在usingUnityEngine.Events;引用添加publicUnityEventOnDead;变量声明为变量添加//主角死亡时触发的事件注释说明用途010203利用主角死亡方法的执行时机,触发死亡事件通知游戏管理器在Dead方法触发事件定位Dead方法添加触发语句验证执行顺序在Player类中找到voidDead(){}方法在方法内animator.SetTrigger("Dead");下方添加OnDead.Invoke();确保事件触发在主角状态设置之后,逻辑顺序正确04GameManager类设计构建游戏核心管理类,实现敌人数量控制与状态监听逻辑声明游戏状态管理所需的核心变量,为逻辑实现提供数据支撑定义成员变量敌人出生点数组敌人数量控制状态标记变量添加[SerializeField]EnemySpawn[]spawns;存储所有敌人生成点声明maxEnemyNum(总敌人数量)、maxEnemyCountInScene(场景最大敌人数量)添加enemyCountInScene(当前场景敌人数量)、isBornEnable(生成开关)等变量123…初始化事件监听,建立游戏管理器与其他组件的通信桥梁编写Start方法遍历出生点绑定出生事件绑定死亡事件使用foreach循环遍历spawns数组中所有EnemySpawn对象为每个出生点的OnBornTime事件添加EnemyBorn方法监听调用player.OnDead.AddListener(PlayerDead);绑定主角死亡监听处理敌人出生逻辑,更新数量统计并控制生成开关状态实现EnemyBorn方法参数接收数量更新开关控制方法接收GameObjectenemy参数表示新生成的敌人对象执行enemyBornedCount++与enemyCountInScene++更新统计数据当数量达到上限时设置isBornEnable为false并关闭所有出生点生成开关05GameManager逻辑完善补充敌人摧毁监听与游戏结束逻辑,实现完整的游戏状态管理为新生成敌人绑定摧毁事件监听,构建敌人生命周期的闭环管理编写ListenEnemyDestroy方法获取组件绑定事件方法位置通过enemy.GetComponent()获取敌人的BombBot组件调用组件的OnEnemyDestroy.AddListener(EnemyDestroy)添加监听在EnemyBorn方法开头调用该方法,确保每个敌人都被监听010203处理敌人摧毁逻辑,更新数量统计并判断游戏胜利条件实现EnemyDestroy方法数量递减恢复生成开关判断胜利条件执行enemyCountInScene--更新当前场景敌人数量当场景敌人数量低于上限时重新开启生成开关当enemyCountInScene<=0且enemyBornedCount>=maxEnemyNum时触发胜利封装游戏结束逻辑,根据胜负状态触发对应事件设计GameOver方法参数接收触发事件方法作用域方法接收boolisWin参数表示游戏结果根据isWin值分别调用OnWin.Invoke()或OnLost.Invoke()设置为public以便其他脚本可主动调用游戏结束逻辑06游戏管理器部署在Unity场景中创建并配置游戏管理器对象,完成功能集成123…生成空对象并挂载管理脚本,构建游戏状态管理的实体载体创建GameManager对象创建空对象重命名对象挂载脚本在Hierarchy窗口右键选择CreateEmpty创建新对象将对象名称改为GameManager确保识别性将Assets\Script路径下的GameManager.cs拖到该对象上确保脚本组件正确附加,为参数配置提供交互界面挂载GameManager脚本检查组件调整显示准备配置选中GameManager对象,在Inspector窗口确认GameManager组件存在若组件显示异常可重新拖放脚本文件确保组件界面无报错提示,等待参数赋值操作配置核心参数,建立管理器与场景元素的关联赋值Spawns数组与Player锁定Inspector选择出生点赋值Player点击Inspector窗口右上角锁图标锁定当前对象在Hierarchy窗口选择所有EnemySpawn对象,拖到Spawns数组参数将场景中的Player对象拖到Player参数栏完成配置总结本课程详细讲解了Unity游戏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论