void UTFGroupItemList::RefreshGroupItemList()
{
if (RefreshHandle.IsValid())
{
return;
}
RefreshGroupItems();
RefreshHandle = FTSTicker::GetCoreTicker().AddTicker(FTickerDelegate::CreateWeakLambda(this, [this](float DeltaTime)
{
if (!GetVisibleItems().IsEmpty())
{
InventoryItems->SetListItems(VisibleListItems);
ChangeSelectedSlot();
RefreshHandle.Reset();
return true;
}
return false;
}));
}
这是刷新道具列表的具体代码实现,讲解一下这段代码,下面还提供调用堆栈:
> UnrealEditor-Force.dll!UTFGroupItemList::RefreshGroupItemList() 行 18 C++
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) 行 7192 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) 行 2175 C++
UnrealEditor-UnLua.dll!FFunctionDesc::CallUE(lua_State * L, int NumParams, void * Userdata) 行 229 C++
UnrealEditor-UnLua.dll!Class_CallUFunction(lua_State * L) 行 1280 C++
[外部代码]
UnrealEditor-UnLua.dll!FFunctionDesc::CallLuaInternal(lua_State * L, void * InParams, FOutParmRec * OutParams, void * RetValueAddress) 行 459 C++
UnrealEditor-UnLua.dll!FFunctionDesc::CallLua(lua_State * L, int LuaRef, void * Params, UObject * Self) 行 164 C++
UnrealEditor-UnLua.dll!UnLua::FDelegateRegistry::Execute(const ULuaDelegateHandler * Handler, void * Params) 行 220 C++
UnrealEditor-UnLua.dll!ULuaDelegateHandler::ProcessEvent(UFunction * Function, void * Parms) 行 79 C++
[内联框架] UnrealEditor-CommonUI.dll!TScriptDelegate<FNotThreadSafeNotCheckedDelegateMode>::ProcessDelegate(void *) 行 448 C++
UnrealEditor-CommonUI.dll!TMulticastScriptDelegate<FNotThreadSafeDelegateMode>::ProcessMulticastDelegate<UObject>(void * Parameters) 行 913 C++
[内联框架] UnrealEditor-CommonUI.dll!UCommonTabListWidgetBase::FOnTabSelected_DelegateWrapper(const TMulticastScriptDelegate<FNotThreadSafeDelegateMode> &) 行 159 C++
[内联框架] UnrealEditor-CommonUI.dll!UCommonTabListWidgetBase::FOnTabSelected::Broadcast(FName) 行 51 C++
UnrealEditor-CommonUI.dll!UCommonTabListWidgetBase::HandleTabButtonSelected(UCommonButtonBase * SelectedTabButton, int ButtonIndex) 行 445 C++
UnrealEditor-CommonUI.dll!UCommonTabListWidgetBase::execHandleTabButtonSelected(UObject * Context, FFrame & Stack, void * const Z_Param__Result) 行 829 C++
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) 行 7192 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) 行 2175 C++
[内联框架] UnrealEditor-CommonUI.dll!TScriptDelegate<FNotThreadSafeNotCheckedDelegateMode>::ProcessDelegate(void *) 行 448 C++
UnrealEditor-CommonUI.dll!TMulticastScriptDelegate<FNotThreadSafeDelegateMode>::ProcessMulticastDelegate<UObject>(void * Parameters) 行 913 C++
[内联框架] UnrealEditor-CommonUI.dll!FSimpleButtonBaseGroupDelegate_DelegateWrapper(const TMulticastScriptDelegate<FNotThreadSafeDelegateMode> &) 行 71 C++
[内联框架] UnrealEditor-CommonUI.dll!FSimpleButtonBaseGroupDelegate::Broadcast(UCommonButtonBase *) 行 10 C++
UnrealEditor-CommonUI.dll!UCommonButtonGroupBase::OnSelectionStateChangedBase(UCommonButtonBase * BaseButton, bool bIsSelected) 行 335 C++
UnrealEditor-CommonUI.dll!UCommonButtonGroupBase::execOnSelectionStateChangedBase(UObject * Context, FFrame & Stack, void * const Z_Param__Result) 行 780 C++
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) 行 7192 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) 行 2175 C++
[内联框架] UnrealEditor-CommonUI.dll!TScriptDelegate<FNotThreadSafeNotCheckedDelegateMode>::ProcessDelegate(void *) 行 448 C++
UnrealEditor-CommonUI.dll!TMulticastScriptDelegate<FNotThreadSafeDelegateMode>::ProcessMulticastDelegate<UObject>(void * Parameters) 行 913 C++
[内联框架] UnrealEditor-CommonUI.dll!FCommonSelectedStateChangedBase_DelegateWrapper(const TMulticastScriptDelegate<FNotThreadSafeDelegateMode> &) 行 1284 C++
[内联框架] UnrealEditor-CommonUI.dll!FCommonSelectedStateChangedBase::Broadcast(UCommonButtonBase *) 行 283 C++
UnrealEditor-CommonUI.dll!UCommonButtonBase::NativeOnSelected(bool bBroadcast) 行 1437 C++
UnrealEditor-CommonUI.dll!UCommonButtonBase::SetSelectedInternal(bool bInSelected, bool bAllowSound, bool bBroadcast) 行 963 C++
UnrealEditor-CommonUI.dll!UCommonButtonGroupBase::OnWidgetAdded(UWidget * NewWidget) 行 224 C++
UnrealEditor-CommonUI.dll!UCommonWidgetGroupBase::AddWidget(UWidget * InWidget) 行 17 C++
UnrealEditor-CommonUI.dll!UCommonTabListWidgetBase::RegisterTab(FName TabNameID, TSubclassOf<UCommonButtonBase> ButtonWidgetType, UWidget * ContentWidget, const int TabIndex) 行 107 C++
UnrealEditor-Force.dll!UTFTabListWidgetBase::RegisterDynamicTab(const FTFTabDescriptor & TabDescriptor) 行 77 C++
UnrealEditor-Force.dll!UTFTabListWidgetBase::execRegisterDynamicTab(UObject * Context, FFrame & Stack, void * const Z_Param__Result) 行 684 C++
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) 行 7192 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) 行 2175 C++
UnrealEditor-UnLua.dll!FFunctionDesc::CallUE(lua_State * L, int NumParams, void * Userdata) 行 229 C++
UnrealEditor-UnLua.dll!Class_CallUFunction(lua_State * L) 行 1280 C++
[外部代码]
UnrealEditor-UnLua.dll!FFunctionDesc::CallLuaInternal(lua_State * L, void * InParams, FOutParmRec * OutParams, void * RetValueAddress) 行 459 C++
UnrealEditor-UnLua.dll!FFunctionDesc::CallLua(lua_State * L, __int64 FunctionRef, __int64 SelfRef, FFrame & Stack, void * const Z_Param__Result) 行 148 C++
UnrealEditor-UnLua.dll!UnLua::FFunctionRegistry::Invoke(ULuaFunction * Function, UObject * Context, FFrame & Stack, void * const Z_Param__Result) 行 84 C++
UnrealEditor-UnLua.dll!ULuaFunction::execCallLua(UObject * Context, FFrame & Stack, void * const Z_Param__Result) 行 36 C++
UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) 行 7192 C++
UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) 行 2175 C++
[内联框架] UnrealEditor-UMG.dll!UUserWidget::Construct() 行 1052 C++
UnrealEditor-UMG.dll!UUserWidget::NativeConstruct() 行 1794 C++
UnrealEditor-CommonUI.dll!UCommonActivatableWidget::NativeConstruct() 行 34 C++
UnrealEditor-CommonUI.dll!UCommonUserWidget::OnWidgetRebuilt() 行 184 C++
UnrealEditor-UMG.dll!UWidget::TakeWidget_Private(TFunctionRef<TSharedPtr<SObjectWidget,1> __cdecl(UUserWidget *,TSharedRef<SWidget,1>)> ConstructMethod) 行 1054 C++
UnrealEditor-CommonUI.dll!UWidget::TakeDerivedWidget<SObjectWidget>(TFunctionRef<TSharedPtr<SObjectWidget,1> __cdecl(UUserWidget *,TSharedRef<SWidget,1>)> ConstructMethod) 行 828 C++
UnrealEditor-CommonUI.dll!FUserWidgetPool::AddActiveWidgetInternal<UCommonActivatableWidget>(TSubclassOf<UCommonActivatableWidget> WidgetClass, TFunctionRef<TSharedPtr<SObjectWidget,1> __cdecl(UUserWidget *,TSharedRef<SWidget,1>)> ConstructWidgetFunc) 行 146 C++
[内联框架] UnrealEditor-CommonUI.dll!FUserWidgetPool::GetOrCreateInstance(TSubclassOf<UCommonActivatableWidget>) 行 62 C++
UnrealEditor-CommonUI.dll!UCommonActivatableWidgetContainerBase::AddWidgetInternal(TSubclassOf<UCommonActivatableWidget> ActivatableWidgetClass, TFunctionRef<void __cdecl(UCommonActivatableWidget &)> InitFunc) 行 178 C++
[内联框架] UnrealEditor-Force.dll!UCommonActivatableWidgetContainerBase::AddWidget(TSubclassOf<UCommonActivatableWidget>) 行 52 C++
UnrealEditor-Force.dll!UPrimaryGameLayout::PushWidgetToLayerStack<UCommonActivatableWidget>(FGameplayTag LayerName, UClass * ActivatableWidgetClass, FName GlobalName, TFunctionRef<void __cdecl(UCommonActivatableWidget &)> InitInstanceFunc) 行 120 C++
UnrealEditor-Force.dll!UPrimaryGameLayout::PushWidgetToLayerStackAsync::__l2::<lambda_1>::operator()() 行 77 C++
[内联框架] UnrealEditor-Force.dll!Invoke(UPrimaryGameLayout::PushWidgetToLayerStackAsync::__l2::<lambda_1> &) 行 47 C++
[内联框架] UnrealEditor-Force.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(UPrimaryGameLayout::PushWidgetToLayerStackAsync::__l2::<lambda_1> &) 行 317 C++
UnrealEditor-Force.dll!TWeakBaseFunctorDelegateInstance<UPrimaryGameLayout,void __cdecl(void),FDefaultDelegateUserPolicy,`UPrimaryGameLayout::PushWidgetToLayerStackAsync<UCommonActivatableWidget>'::`2'::<lambda_1>>::ExecuteIfSafe() 行 971 C++
[内联框架] UnrealEditor-Engine.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() 行 634 C++
UnrealEditor-Engine.dll!FStreamableDelegateDelayHelper::Tick(float DeltaTime) 行 179 C++
UnrealEditor-Engine.dll!FTickableGameObject::TickObjects(UWorld * World, ELevelTick LevelTickType, bool bIsPaused, float DeltaSeconds) 行 196 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) 行 2193 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) 行 550 C++
UnrealEditor.exe!FEngineLoop::Tick() 行 5869 C++
[内联框架] UnrealEditor.exe!EngineTick() 行 69 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) 行 188 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) 行 266 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) 行 317 C++
[外部代码]
最后解释一下,调用堆栈中[外部代码]和[内联框架]这两个标识代表什么意思?