zoukankan      html  css  js  c++  java
  • Nested Prefab Mode 嵌套预制体 保存问题 Dirty

    Unity2018.3 Nested Prefab Mode 嵌套预制体

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

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

    关注点 Prefab Mode

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

    实际使用总结

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

    参考

    官方教程
    脚本参考PrefabStage

  • 相关阅读:
    过滤'and','or' ''' '*' '=' ‘select’下的注入
    HBase 官方文档0.90.4
    MapReduce原理及操作
    HDFS原理及操作
    Sqoop介绍、安装与操作
    HBase介绍、安装与应用案例
    Mahout介绍、安装与应用案例
    Hive介绍和安装部署
    MapReduce应用案例
    Flume介绍与安装
  • 原文地址:https://www.cnblogs.com/oplusx/p/10333010.html
Copyright © 2011-2022 走看看