游戏里需要超链接,比如点击文字或图片然后会弹出tips。需要实现的是文字的可点击和超链接内容的读取。
如格式<a itemId="001">物品1</>
显示文字 物品1 然后点击后我们能够知道是itemId=“001”
代码如下:
头文件:
#pragma once
#include "Components/RichTextBlockDecorator.h"
#include "CoreMinimal.h"
#include "HyperLinkRichTextBlockDecorator.generated.h"
class FRichHyperLinkData
{
public:
FRichHyperLinkData(UHyperLinkRichTextBlockDecorator* decorator, TMap<FString, FString> metaData);
FSimpleDelegate m_LinkDelegate;
};
class FRichInlineHyperLinkDecorator : public FRichTextDecorator
{
public:
FRichInlineHyperLinkDecorator(URichTextBlock* InOwner, UHyperLinkRichTextBlockDecorator* decorator);
virtual bool Supports(const FTextRunParseResults& RunParseResult, const FString& Text) const override;
protected:
virtual TSharedPtr<SWidget> CreateDecoratorWidget(const FTextRunInfo& RunInfo, const FTextBlockStyle& TextStyle) const override;
void ExplodeTextStyleInfo(TMap<FString, FString>& MetaData, FSlateFontInfo& OutFont, FLinearColor& OutFontColor) const;
UHyperLinkRichTextBlockDecorator* m_Decorator;
mutable FHyperlinkStyle m_Linkstyle;
mutable FSlateFontInfo m_DefaultFont;
mutable FSlateColor m_DefaultColor;
mutable TArray<FRichHyperLinkData> m_LinkData;
mutable uint8 m_curLinkIndex;
mutable FString m_Content;
};
//
UCLASS()
class RICHTEXTBLOCKDECORATOR_API UHyperLinkRichTextBlockDecorator : public URichTextBlockDecorator
{
GENERATED_B