Unity2018.3 嵌套预制体 OpenPrefab相关状态获取

Unity2018.3开始,新增了一个Prefab Mode,俗称嵌套预制体,在Prefab里套Prefab。实际应用中多少会有些坑。

  • 资源打包,Assetbundle一直都有依赖的问题。所以嵌套的Prefab理所当然要预加载。
  • 脚本修改Prefab,很多生产环境下都会有代码处理Prefab的情况,而这次新增的Prefab Mode,与之前的编辑模式是不同的,所以升级后需做兼容性修改。
  • 进入Prefab Mode就是双击Assets里的Prefab文件。
  • 详细教程 https://unity.com/prefabs

关注点 Prefab Mode

 Scene ModePrefab Mode
Hierarchy 里操作的对象本质Prefab Instance 实例Assets里的UnityEngine.Object文件
Apply 保存过程从Instance写入到Asset里的Prefab文件直接操作Assets里的Prefab文件
SetDirty 脚本修改Prefab上的对象EditorUtility.SetDirty(Object)暂无(目前U3D问答上很多人在问)
设置场景DirtyEditorSceneManager.GetActiveScene()PrefabStageUtility.GetCurrentPrefabStage().scene)
Apply时的回调PrefabUtility.prefabInstanceUpdatedPrefabStage.prefabSaving

实际使用总结

  • 官网上宣称的Prefab Mode,其实在代码里的引用叫做Prefab Stage
  • 通过脚本来操作Prefab的时候,需要注意PrefabStageUtility.GetCurrentPrefabStage()优先判断是否在Prefab Mode
  • Prefab Mode下,如果通过代码脚本修改对象属性,一定要注意EditorSceneManager.MarkSceneDirty的调用。
  • 注意Scene View右上角的Auto Save按钮
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值