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

CChangL CChangL 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

目录

  • 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

...全文

相关推荐

unity 3d迷宫 NPC 小地图

unity3d迷宫游戏 放置有NPC 恐怖风格 第一人称 较完整 具有音效等

weixin_40953148

用Unity打造农场模拟游戏:课程设计从种植系统到答辩全攻略

状态机、数据驱动与事件驱动是游戏开发中构建复杂系统的三大核心思想。通过将作物生长建模为状态机,利用数据表定义作物属性,再以事件驱动协调时间、背包与NPC模块,开发者能够以清晰架构实现可扩展的互动体验。这种设计不仅适用于农场模拟题材,也可迁移至角色养成、模拟经营等多元应用场景。在实际工程中,结合Unity引擎的Tilemap、ScriptableObject与序列化存档机制,可以高效落地一套包含种植、时间季节、NPC任务与存档读档的完整游戏原型。本文以“麦田物语”农场模拟课程设计为例,系统讲解从玩法循环设计、

吟游诗人基德

Unity游戏开发:基于配置驱动与组件化的角色动画系统构建

在游戏开发中,动画系统是连接角色逻辑与视觉表现的核心模块。其基本原理是通过状态机管理动画片段之间的切换逻辑,驱动角色模型做出相应动作。传统的硬编码方式在面对大量同类角色时,会导致代码冗余和维护成本激增。为了解决这一问题,配置驱动与组件化设计应运而生,它们通过将角色的行为定义(数据)与执行逻辑(代码)分离,实现了高度的可复用性和可扩展性。这种架构特别适用于需要快速生成大量差异化角色的场景,如RPG中的怪物族群或NPC系统。本文以Unity引擎为例,深入探讨如何利用ScriptableObject作为配置载体,

weixin_34245082

unity比较全的素材包(炫酷天空盒,地形,水,游戏场景,人物模型等)

unity比较全的素材包(炫酷天空盒,地形,水,游戏场景,人物模型等)unity比较全的素材包(炫酷天空盒,地形,水,游戏场景,人物模型等)

Vialler

unity角色头顶血条系统Enemy + NPC Healt.zip

unity角色头顶血条系统Enemy + NPC Healt unity游戏开发,导入直接使用,方便好看

程序、猿
评论
收藏 已收藏
分享
返回顶部