Copying a grouped MaterialInstanceParameterDetail property that has spaces on it's name does not enclose it in double quotes, and later pasting won't work as expected.
The licensee noticed this in a setup that had two parameters with similar names, one containing a space, the other didn't: when copying all properties in the group and pasting, the second parameter would assume the values of the first, while the first was being ignored.
The issue consists of the lack of quotes enclosing a property that has spaces on it's name. When being pasted it is misread by the engine and causes issues. Try pasting the contents of the Clipboard to a text editor and note the parameter names that have spaces are not enclosed in quotes and are either ignored completely or are misinterpreted as other parameters.
Check steps to reproduce for a more detailed description and example.
I've tested this issue and confirmed they reproduce against UE versions 5.6 and 5.7 (CL44372627).
The licensee has provided a repro project that responds to this issue in a more extreme way, so it makes it easier to spot the difference, as some parameters vanish when pasting the contents of the group copy.
Once pasted, some properties disappear - they are tied to the value of Droplets/Leaks that is set as false as a consequence of the bug.
To reproduce the issue from scratch:
1. Create a Material (e.g. M_Repro)
2. Open it and add any Parameter type (e.g. Vector4). While naming it, include one or more spaces (e.g. My Space Param)
3. Create a second Parameter and name it just the last word of the first Parameter (e.g. Param)
4. Create a Material Instance from said material (e.g. M_Repro_Inst)
5. Open M_Repro_Inst
6. Enable the override on My Space Param
7. Disable the override on Param
8. Right-mouse-click on Global Vector Parameter Values, select Copy All Properties in Group
9. Right-mouse-click on Global Vector Parameter Values, select Paste All Properties in Group
Expected result: both My Space Param and Param properties should maintain their values since we copied them and pasted over themselves
Actual result: the value of Param.Override is set to true
If we paste the contents of the Clipboard on a text editor we end up with:
My Space Param.Override=True,My Space Param.Value="(R=0.000000,G=0.000000,B=0.000000,A=0.000000)",Param.Override=False
The name My Space Param is not enclosed on quotes, and because of that it is read as My, Space, and finally, Param.Override=True - that flips the value of the parameter with the same name below.
I've verified that adding quotes to My Space Param fixes the issue, like so:
"My Space Param".Override=True,"My Space Param".Value="(R=0.000000,G=0.000000,B=0.000000,A=0.000000)",Param.Override=False
> UnrealEditor-MaterialEditor.dll!FMaterialInstanceParameterDetails::OnCopyParameterValues(int ParameterGroupIndex) Line 1136 C++
[Inline Frame] UnrealEditor-MaterialEditor.dll!Invoke(void(FMaterialInstanceParameterDetails::*)(int)) Line 66 C++
[Inline Frame] UnrealEditor-MaterialEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int,0>,int>::ApplyAfter(void(FMaterialInstanceParameterDetails::*)(int) &) Line 320 C++
UnrealEditor-MaterialEditor.dll!TBaseSPMethodDelegateInstance<0,FMaterialInstanceParameterDetails,1,void __cdecl(void),FDefaultDelegateUserPolicy,int>::ExecuteIfSafe() Line 309 C++
[Inline Frame] UnrealEditor-Slate.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() Line 635 C++
UnrealEditor-Slate.dll!FUIAction::Execute() Line 139 C++
UnrealEditor-Slate.dll!SMenuEntryBlock::OnClicked(bool bCheckBoxClicked) Line 1197 C++
UnrealEditor-Slate.dll!SMenuEntryBlock::OnMenuItemButtonClicked() Line 1148 C++
[Inline Frame] UnrealEditor-Slate.dll!Invoke(FReply(SMenuEntryBlock::*)()) Line 66 C++
[Inline Frame] UnrealEditor-Slate.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(FReply(SMenuEntryBlock::*)() &) Line 320 C++
UnrealEditor-Slate.dll!V::TBaseSPMethodDelegateInstance::Execute() Line 292 C++
[Inline Frame] UnrealEditor-Slate.dll!TDelegate<FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 614 C++
UnrealEditor-Slate.dll!SButton::ExecuteOnClick() Line 495 C++
UnrealEditor-Slate.dll!SButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 419 C++
UnrealEditor-Slate.dll!SMenuEntryButton::OnMouseButtonUp(const FGeometry & MyGeometry, const FPointerEvent & MouseEvent) Line 447 C++
UnrealEditor-Slate.dll!??R<lambda_2>@?7??RoutePointerUpEvent@FSlateApplication@@QEAA?AVFReply@@AEBVFWidgetPath@@AEBUFPointerEvent@@@Z@QEBA@AEBVFArrangedWidget@@1@Z(const FArrangedWidget & TargetWidget, const FPointerEvent & Event) Line 5367 C++
UnrealEditor-Slate.dll!??$Route@VFReply@@VFToLeafmostPolicy@FEventRouter@@UFPointerEvent@@V<lambda_2>@?7??RoutePointerUpEvent@FSlateApplication@@QEAA?AV1@AEBVFWidgetPath@@AEBU4@@Z@@FEventRouter@@SA?AVFReply@@PEAVFSlateApplication@@VFToLeafmostPolicy@0@UFPointerEvent@@AEBV<lambda_2>@?7??RoutePointerUpEvent@2@QEAA?AV1@AEBVFWidgetPath@@AEBU4@@Z@W4ESlateDebuggingInputEvent@@@Z(FSlateApplication * ThisApplication, FEventRouter::FToLeafmostPolicy RoutingPolicy, FPointerEvent EventCopy, const FSlateApplication::RoutePointerUpEvent::__l8::<lambda_2> & Lambda, ESlateDebuggingInputEvent DebuggingInputEvent) Line 456 C++
UnrealEditor-Slate.dll!FSlateApplication::RoutePointerUpEvent(const FWidgetPath & WidgetsUnderPointer, const FPointerEvent & PointerEvent) Line 5353 C++
UnrealEditor-Slate.dll!FSlateApplication::ProcessMouseButtonUpEvent(const FPointerEvent & MouseEvent) Line 5938 C++
UnrealEditor-Slate.dll!FSlateApplication::OnMouseUp(const EMouseButtons::Type Button, const UE::Math::TVector2<double> CursorPos) Line 5894 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessDeferredMessage(const FDeferredWindowsMessage & DeferredMessage) Line 3052 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::DeferMessage(TSharedPtr<FWindowsWindow,1> & NativeWindow, HWND__ * InHWnd, unsigned int InMessage, unsigned __int64 InWParam, __int64 InLParam, int MouseX, int MouseY, unsigned int RawInputFlags) Line 3570 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::ProcessMessage(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 2725 C++
[Inline Frame] UnrealEditor-ApplicationCore.dll!WindowsApplication_WndProc(HWND__ *) Line 1716 C++
UnrealEditor-ApplicationCore.dll!FWindowsApplication::AppWndProc(HWND__ * hwnd, unsigned int msg, unsigned __int64 wParam, __int64 lParam) Line 1722 C++
[External Code]
[Inline Frame] UnrealEditor-ApplicationCore.dll!WinPumpMessages() Line 116 C++
UnrealEditor-ApplicationCore.dll!FWindowsPlatformApplicationMisc::PumpMessages(bool bFromMainLoop) Line 145 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5554 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 60 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 187 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 271 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 339 C++
[External Code]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-315178 in the post.
0 |
Component | UE - Rendering Architecture - Materials |
---|---|
Affects Versions | 5.6, 5.7 |
Created | Aug 24, 2025 |
---|---|
Updated | Sep 11, 2025 |