You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C#代码在Unity3D中应用Prefab实例的修改覆盖?

Unity 2020.3+ 脚本实现Prefab实例修改全量应用

截至Unity 2020.3版本,官方未提供开箱即用的单步API实现等效编辑器内置「Apply Prefab」的功能,下述代码使用当前版本未废弃的正式API实现,自带参数校验和异常处理逻辑,一行即可调用:

// 传入场景中的Prefab实例GameObject即可完成全量修改应用
if (PrefabUtility.IsPartOfNonAssetPrefabInstance(targetInstance)) try { PrefabUtility.ApplyPrefabInstance(targetInstance, InteractionMode.UserAction); } catch (System.Exception e) { UnityEngine.Debug.LogError($"Prefab修改应用失败:{e.Message}", targetInstance); }

使用说明

  • 入参targetInstance为场景中需要应用修改的Prefab实例对象,不可直接传入Project窗口中的Prefab资产
  • 前置校验会自动过滤非Prefab实例、Prefab资产等无效入参,避免报错
  • 内置异常捕获可处理Prefab资产被锁定、无写入权限、实例结构损坏等特殊场景的问题
  • 执行效果和编辑器右键点击Prefab实例选择「Apply All Modifications」完全一致,会自动记录撤销栈、触发资产保存流程

注意事项

  • 该代码仅可在编辑器环境执行,需将脚本放在Editor目录下,或用#if UNITY_EDITOR宏包裹代码逻辑
  • 如需仅应用单个组件/属性的修改,可配合PrefabUtility.ApplyObjectOverrideAPI实现
  • 对嵌套Prefab的子节点调用时,默认仅应用到当前层级的Prefab资产,如需应用到最外层根Prefab,需先通过PrefabUtility.GetOutermostPrefabInstanceRoot获取根实例后再调用

内容的提问来源于stack exchange,提问作者Konstantinos Vasileiadis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:54:07