尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Unity《极限救援》项目报错记录

Unity《极限救援》项目报错记录 1.MonsterObject空引用。在Awake中关联player对象位置不能获取。在update中获取并且给条件加空值判断就能获取。原因Monster一开始就在场景上实例化玩家对象需要时间所以一开始获取不到玩家对象位置2.Monster不能进入待机状态。原因Vector3.Distance条件阈值过小计算机中浮点数运算有微小误差距离很难精确到 0.1f 以下NavMeshAgent 有微小移动或物理抖动Monster很难稳定满足条件导致频繁进入和退出 Idle 状态3.后处理Post-processing更改天空盒导入Post Processing包Package Manager 里搜给相机添加Post Process Layer和Post Process Volume新建一个Post Process Profile添加Color Grading把Post Exposure拉低-1~-2Contrast拉高Color Filter加蓝 / 紫色Bloom降低强度让夜晚更静谧1Vignette加一点暗角突出夜晚氛围感Post Process Profile绑定给Post Process Volume5.场景资源对象不受新建点光源影响原因烘焙光照冲突点击顶部菜单栏「Window → Rendering → Lightmapping」→ 点击「Clear Baked Data」清除旧烘焙数据重新烘焙。6.各个组件及对象生命周期不同要养成添加空值(安全)判断的习惯.7协程里的 yield returnWaitForSeconds 完全被 Time.timeScale 锁死了• yield return null只等帧不受timeScale影响→能执行到暂停但 Ul 没渲染完• yield return new WaitForSeconds(0.1f)等游戏时间如果 timeScale 不是1会无限等待→永远到不了暂停逻辑。解决方法将时间暂停的协程写在游戏结束面板 显示结束面板初始化自己时开启协程将暂停时间的逻辑移到GameOverPanel内部而不是在EscapePanel协程中控制。这样解耦更清晰。8.销毁玩家对象后 CameraMove挂载的玩家目标target不会立即为空Destroy会隔一帧执行。CameraMove 会影响摄像机旋转。方法1重置前清除 CameraMove 的目标方法2DestroyImmediate立即删除玩家对象9. 问题 talkInfoIndex 5后 没有隐藏面板原因生命周期 当talkInfoIndex等于5每帧重复执行HidePanel面板执行淡入淡出方法需要时间每帧都要重新淡出所有表现得没有执行HidePanel。解决加判断条件10. 不要轻易禁用脚本原因 PlayerObject脚本禁用后将不再检测任何包括生命周期函数。如果想恢复脚本根本不会执行任何函数解决直接return跳过想禁用的逻辑即可11.生命周期问题 UI显示与隐藏大都是销毁或失活面板此时面板上的变量会随着面板的销毁到激活重置状态。 所以在面板类里面改变参数往往不会有效果解决将变量声明在TalkMgr管理器里面数据持久化12.值类型与引用类型 问题声明了private Vector3 PlayerPos; 运行没有打印信息原因13.声明Vector3和Transform的选择Vector3如果你需要持续追踪某个物体如玩家、敌人并且可能需要获取它的旋转、父子关系或者它的位置会实时变化。Transform如果你只需要记录某一瞬间的位置如出生点、存档点、攻击目标点或者进行纯粹的数学计算不需要关心这个位置属于哪个物体。Vector3可能会出现旧数据残留导致虽然Debug.Log(player)打印了信息但依旧找不到player对象14.对象池与寻路组件相关问题通过对象池创建物体时即使在对象池GetObj方法设置了位置刷怪点位置还是异常问题排查1.位置被其他地方调用覆盖2.对象池布局功能逻辑父子关系干扰了位置设置3.对象池旧数据寻路组件缓存的路径、目标点等未清理干净4.NavMeshAgent干扰 √√√5Transform或单例模式位置锁定Lock6.Rigidbody 组件原因.NavMeshAgent生命周期问题。即使对象池为空CreatMonster方法和对象池都是在用Instantiate创建对象但因为NavMeshAgent执行时机不同也会导致不同的位置效果解决1怪物预设体寻路组件失活在游戏运行时再激活。防止NavMeshAgent在执行对象池实例化方法之前系统内部先进行初始化最终影响设置的位置解决2在对象池GetObj方法中寻路组件实现失活-设置位置-激活的流程。有效地隔离组件初始化与位置设置
返回列表