lilToon项目在Unity 18.1版本中世界场景上传失败问题分析
【免费下载链接】lilToon Feature-rich shaders for avatars 项目地址: https://gitcode.com/gh_mirrors/li/lilToon
问题现象
在Unity 18.1版本中使用lilToon着色器时,当尝试将VRChat世界场景项目上传至平台时,系统会抛出三个关键错误信息:
- "An abnormal situation has occurred: the PlayerLoop internal function has been called recursively. Please contact Customer Support with a sample project so that we can reproduce the problem and troubleshoot it."
- "Upload Was Canceled"
- "TaskCanceledException: A task was canceled"
这些错误导致上传过程被强制取消。值得注意的是,当开发者将Unity版本回退至17.3时,上传过程能够正常完成。
技术背景
lilToon是一个高质量的卡通着色器解决方案,主要用于VRChat中的角色渲染。虽然其主要设计目标是用于角色模型,但有时开发者也会尝试将其应用于世界场景的渲染中。这种使用方式虽然非主流,但在某些特定艺术风格的需求下确实存在。
问题根源
经过技术团队深入分析,发现问题源于lilToon在180号提交中的一项修改。该修改引入了UnityEditor.SceneManagement.EditorSceneManager.OpenScene方法的调用,而这一调用与VRChat世界项目的上传流程产生了冲突。
具体来说,在Unity 18.1版本中,VRChat SDK的上传流程对场景管理API的使用方式发生了变化,导致当lilToon尝试通过OpenScene方法访问场景时,与上传流程的内部机制产生了递归调用冲突,最终触发了系统保护机制而取消了上传任务。
解决方案
开发团队迅速响应并提供了修复方案:
- 移除了两处可能导致冲突的OpenScene调用
- 优化了场景访问逻辑以避免与上传流程的交互
这一修复已经通过Pull Request合并到主分支中,用户更新至最新版本即可解决该问题。
经验总结
这个案例为我们提供了几个重要的技术启示:
- 插件开发时需要特别注意API调用可能与其他系统流程产生的交互影响
- Unity不同版本间对编辑器API的行为可能存在微妙差异
- 针对特定平台(如VRChat)的插件需要特别考虑该平台的特定工作流程
- 在引入编辑器脚本功能时,需要充分测试其在各种工作流程中的表现
用户建议
对于遇到类似问题的开发者,我们建议:
- 及时更新至lilToon的最新版本
- 如果必须使用特定Unity版本,可以考虑临时降级作为应急方案
- 在项目开发初期就进行完整流程测试,避免后期发现问题
- 对于关键功能,保持与社区和开发团队的沟通渠道畅通
通过这次问题的分析和解决,lilToon项目在兼容性和稳定性方面又向前迈进了一步,为开发者提供了更可靠的技术支持。
【免费下载链接】lilToon Feature-rich shaders for avatars 项目地址: https://gitcode.com/gh_mirrors/li/lilToon
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



