Unity在编辑器模式下一键替换组件/序列化的对象修改

本文介绍在Unity开发中,如何在编辑器模式下无损地替换已广泛使用的组件A为扩展后的组件B,涉及上百个Prefab的批量替换。通过修改序列化信息的m_Script字段,确保组件替换同时保留原有序列化状态。文章探讨了手动修改与代码自动化替换两种方法,强调了ApplyModifiedProperties和UpdateIfRequiredOrScript调用顺序的重要性。
摘要由CSDN通过智能技术生成

source:被替换的组件脚本,target:要替换的目标脚本。

前言

在游戏开发过程中,组件A已经大范围使用,后续因为需求原因导致我们需要对组件A进行拓展,并且不影响原来的功能的情况下,替换成扩展后的组件B,此时需要替换的范围是整个游戏内已经制作完成的prefab,上百个都是有可能的。

假设我们还使用了prefab的嵌套和变体的情况下,如果单纯的使用DestroyObjectImmediate和AddComponent,嵌套和变体就会引发新的问题。

本篇就是实现:丝滑替换组件并且保留原有的序列化信息

 

 

思路:通过修改序列化信息的m_Script来实现组件替换

方法一:手动修改

方法二:项目组一般替换会涉及全部替换,手动替换不现实,直接通过代码修改prefab的序列化信息达到替换的效果

source:被替换的组件脚本,target:要替换的目标脚本。

//assetPath:该prefab在Assets下的路径
GameObject root = AssetDatabase.LoadAssetAtPath<GameObject>(assetPath);
          
//scriptPath:targe的脚本在Assets下的路径
var scriptPath = "Assets/Test/UITargete
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值