Hi, Epics
After upgrading to UE5.6,I find**(Edit Selection in Property Matrix)**disappeared.
How can I add it back?
thanks
Hi, Epics
After upgrading to UE5.6,I find**(Edit Selection in Property Matrix)**disappeared.
How can I add it back?
thanks
重现步骤
[Image Removed]
Hi Sanning Chan,
Bulk-editing Material assets using the Property Matrix is disabled by design since UE 4.8. Please try it with a different kind of asset and let me know if it works.
I dug a little bit into the history of this. The issue that caused the Property Matrix to be disabled for Materials was this: UE-3326. It was fixed by commit 00b0311 / CL 2521721 with the following message:
UE4 - Do not allow Materials to be edited using property matrix (Fixes UE-3326).
Materials don't have a good pattern/paradigm for updating 'anywhere' as they rely on talking to and flushing the rendering thread.
Afterwards, two other issues popped up about this change: UE-20299 was marked as “By Design” and UE-15875 was marked as “Won’t Fix”.
Now, since these issues are all quite old (2015/2016), I decided to check the behavior on the latest source version of the engine. So, I disabled the fix and attempted the repro steps from the original issue. Interestingly, no crash occurred, and the updated materials seemed to behave as expected. This might mean that the restriction on Material assets can be lifted after all the work that happened from UE 4.8 to the latest versions, but I believe such a decision would have to go through some extensive testing on the dev side. If you are building from source and want to try it on your own, all you have to do is edit file [AssetFileContextMenu.cpp], function FAssetFileContextMenu::MakeAssetActionsSubMenu(), and comment out the following code segment:
if (bCanUsePropertyMatrix)
{
// Materials can't be bulk edited currently as they require very special handling because of their dependencies with the rendering thread, and we'd have to hack the property matrix too much.
for (const FAssetData& Asset : SelectedAssets)
{
if (Asset.AssetClassPath == UMaterial::StaticClass()->GetClassPathName() || Asset.AssetClassPath == UMaterialInstanceConstant::StaticClass()->GetClassPathName() || Asset.AssetClassPath == UMaterialFunction::StaticClass()->GetClassPathName() || Asset.AssetClassPath == UMaterialFunctionInstance::StaticClass()->GetClassPathName())
{
bCanUsePropertyMatrix = false;
break;
}
}
}
Keep in mind, though, that this is *not* officially supported, so you’d have to be very cautious with your changes and always test any updated materials thoroughly. I would only go this path as a last resort. But anyway, I’ll reach out to the devs to see if they think this is something that could be acted upon at this time or in the near future.
Let me know if there is anything else I can assist you with.
Best regards,
Vitor
It’s very helpful for me, I will try it.
thanks