Unity3D:覆盖多个级别

Unity3D:覆盖多个级别
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

覆盖多个级别

在其他预制件中使用预制件或使用预制件变体时,覆盖可存在于多个级别,且相同的覆盖可应用于多个不同的预制件。

选择应用目标

当一个预制件实例的内部有嵌套的预制件或者是预制件变体时,可以选择应该将覆盖应用于哪个预制件。

假设一个预制件“Vase”嵌套在预制件“Table”中的,而且场景包含“Table”预制件的一个实例。

Table预制件中嵌套了Vase预制件。
“Table”预制件中嵌套了“Vase”预制件。

在此实例上,如果“Vase”上的属性被覆盖,则可以将此覆盖应用于多个预制件:“Vase”或“Table”。

Overrides 下拉窗口中的 Apply All 按钮仅允许将覆盖应用于外层预制件:在本例中为“Table”。但是,通过上下文菜单或通过 Overrides 下拉窗口中各个组件的比较视图应用覆盖时,可以选择应用目标。

在此示例中,如果选择 Apply to Prefab ‘Vase’,该值将应用于“Vase”预制件资源,并用于“Vase”预制件的所有实例。

另外,如果在选择 Apply as Override in Prefab ‘Table’,该值将成为“Table”预制件内的“Vase”实例上的覆盖。该属性不再标记为场景内实例上的覆盖,但如果在预制件模式下打开“Table”预制件,则“Vase”预制件实例上的属性将在此处标记为覆盖。

覆盖为“Table”预制件资源中的覆盖时,“Vase”预制件资源本身完全不受影响。这意味着“Table”预制件的所有实例现在都在其“Vase”预制件实例上具有新值,但不属于“Table”预制件的其他“Vase”预制件实例不受影响。

如果“Vase”预制件本身的属性稍后改变,此更改将影响“Vase”预制件的所有实例,但该属性被覆盖的实例除外。由于属性在“Table”预制件内的“Vase”实例上被覆盖,因此更改不会影响属于“Table”实例的任何“Vase”实例。

应用于内层预制件也可能会影响外层预制件

将一个或多个属性应用于内层预制件资源有时也可能修改外层预制件资源,因为这些属性会在外层预制件中恢复其覆盖。

在我们的示例中,如果选择 __Apply to Prefab ‘Vase’__,且“Table”预制件具有该值的覆盖,则“Table”预制件中的此覆盖将同时恢复,使实例上的属性保留刚应用的值。如果不是这种情况,则实例上的值将在应用后立即更改。


  • 2018–07–31 页面已发布
  • 在 2018.3 版中添加了嵌套预制件和预制件变体

此文由3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D:预制件变体 (mvrlink.com)

下一篇:Unity3D:图层在 Unity 中的使用 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号