# Npc 创建

1,由策划拖拽预制体到一个地图里 prefab种包含 世界3D坐标,npcId属性 保存后导出为json
2,excel创建形象id配表 设置每个部位的预制体路径(包含lod)
3,excel创建npc配表 由npcId, 名字,对话内容id,形象id,功能id等组成  创建npc功能配表,近中远距离配置,距离触发功能id,默认功能id
4,npc模块awke时根据当前地图 读取npc配表 找到resId加载预制体
缺点:因为采用了纯配表的静态配置 如果需要动态npc 需要服务器保存 npc的修改 或者 计算npc的变化 如:任务到了一定阶段 npc形象变更 要么保存变更到服务器 要么初始化时候计算任务数据判断npc形象 这样做不利于代码维护 debug相对困难,而且实际业务有很多系统会影响npc模块

# 代码优化相关

1,通过lua profiler分析出 lua和c#交互时产生了大量gc 原因是update中lua和c#存在 类,回调的交互 每帧都在创建代理对象.
  如:update中lua代码访问一个gameObject对象的transform
     update或高频率调用的函数中 lua传给了c#端一个回调
  解决方案:1,将高频率调用的c#对象在lua中提前申明出来 变成全局变量,不要每次都申明.或者 自己在lua段写一份(有点麻烦)
          2,回调函数 通过生成一个唯一的序列号 两端传序列号 去触发回调函数.

更新于 阅读次数