软件工程个人技术总结——unity进入场景时根据配置的条件生成npc

221900202陈昌隆 学生 2022-06-26 23:09:56

目录

  • 1.概述
  • 2.详述
  • 2.1 主要类npc生成器
  • 2.2 条件类
  • 2.3 SetNpcList()方法
  • 3.技术使用中遇到的问题和解决过程
  • 4.总结
  • 5.参考资料

1.概述

进入场景时,根据给定的条件(检查玩家的属性,已完成的任务等),激活对应的npc,包含满足条件则必定出现的npc和满足条件后有概率出现的随机npc。

2.详述

2.1 主要类npc生成器

在这里插入图片描述

使用单例模式,在需要刷新场景的npc时(如场景加载完成后),调用GenerateNpcs()方法即可

NpcGenerateManager.GetInstance().GenerateNpcs();

事先在unity场景内铺好所有npc物体,在本次项目中规定将所有具有NpcInteract的脚本作为Npc。
在FindAllNpc()方法,获取所有npc并塞进npcList里。
在SetNpcList()方法,通过npcList隐藏所有npc,通过代码判断条件进行筛选得到应生成的npc。
在DoGenerate()方法,通过筛选后得到的npcGenList,将里面的所有npc激活。

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

2.2 条件类

在这里插入图片描述

每个npc身上挂载的NpcInteract脚本,具有一个配置好的Npc_SO成员(使用ScriptabeObject存储数据)。
Npc_SO中具有配置好的条件类RequireClass,根据配置的数据使用getRequireBool()方法检测是否满足条件。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

2.3 SetNpcList()方法

在这里插入图片描述

通过这一方法,将满足条件的npc筛选出来并塞进npcGenList中。交给后续的方法进行处理。

3.技术使用中遇到的问题和解决过程

1.在编写与测试过程中,注意到unity场景内的npc应都处于激活状态,否则可能会影响FindObjectsOfType的获取。
2.应进行各项测试,尤其是使用ScriptableObject时应注意空指针的处理。应在多处做好xxx==null的判断。在末期测试时,出现了在unity内运行时一切正常,但导出后出现异常的空指针问题。

4.总结

1.获取所有作为npc的gameObject的物体。全部隐藏。
2.进行条件筛选,根据项目需求灵活编写相关代码。
3.将筛选得到的所有npc激活。
4.使用单例模式的类,在他处可简短快速地调用方法令npc重新生成。
5.个人在本项目中使用scriptableobject进行数据配置与存储。包括npc、npc对话、npc生成条件等...

5.参考资料

Unity官方文档
Unity官方文档-ScriptableObject

...全文
60 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
2022年福大-软件工程、实践-W班

134

社区成员

2022年福大-软件工程;软件工程实践-W班
社区管理员
  • FZU_SE_teacherW
  • 丝雨_xrc
  • Lyu-
加入社区
帖子事件
创建了帖子
2022-06-26 23:09
社区公告
暂无公告