142
社区成员




进入场景时,根据给定的条件(检查玩家的属性,已完成的任务等),激活对应的npc,包含满足条件则必定出现的npc和满足条件后有概率出现的随机npc。
使用单例模式,在需要刷新场景的npc时(如场景加载完成后),调用GenerateNpcs()方法即可
NpcGenerateManager.GetInstance().GenerateNpcs();
事先在unity场景内铺好所有npc物体,在本次项目中规定将所有具有NpcInteract的脚本作为Npc。
在FindAllNpc()方法,获取所有npc并塞进npcList里。
在SetNpcList()方法,通过npcList隐藏所有npc,通过代码判断条件进行筛选得到应生成的npc。
在DoGenerate()方法,通过筛选后得到的npcGenList,将里面的所有npc激活。
每个npc身上挂载的NpcInteract脚本,具有一个配置好的Npc_SO成员(使用ScriptabeObject存储数据)。
Npc_SO中具有配置好的条件类RequireClass,根据配置的数据使用getRequireBool()方法检测是否满足条件。
通过这一方法,将满足条件的npc筛选出来并塞进npcGenList中。交给后续的方法进行处理。
1.在编写与测试过程中,注意到unity场景内的npc应都处于激活状态,否则可能会影响FindObjectsOfType的获取。
2.应进行各项测试,尤其是使用ScriptableObject时应注意空指针的处理。应在多处做好xxx==null的判断。在末期测试时,出现了在unity内运行时一切正常,但导出后出现异常的空指针问题。
1.获取所有作为npc的gameObject的物体。全部隐藏。
2.进行条件筛选,根据项目需求灵活编写相关代码。
3.将筛选得到的所有npc激活。
4.使用单例模式的类,在他处可简短快速地调用方法令npc重新生成。
5.个人在本项目中使用scriptableobject进行数据配置与存储。包括npc、npc对话、npc生成条件等...