初始化VideoCallWidget
为每个按钮找到asset图像,并将其分配到相应的纹理。然后用纹理初始化每个按钮。
//VideoCallWidget.h
...
UCLASS()
class AGORAVIDEOCALL_API UVideoCallWidget : public UUserWidget
{
GENERATED_BODY()
public:
..
UVideoCallWidget(const FObjectInitializer& ObjectInitializer);
void NativeConstruct() override;
void NativeDestruct() override;
private:
void InitButtons();
...
};
//VideoCallWidget.cpp
void UVideoCallWidget::NativeConstruct()
{
Super::NativeConstruct();
InitButtons();
}
void UVideoCallWidget::NativeDestruct()
{
Super::NativeDestruct();
if (VideoCallPtr)
{
VideoCallPtr->StopCall();
}
}
UVideoCallWidget::UVideoCallWidget(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
static ConstructorHelpers::FObjectFinder<UTexture2D>
EndCallButtonTextureFinder(TEXT("Texture'/Game/ButtonTextures/hangup.hangup'"));
if (EndCallButtonTextureFinder.Succeeded())
{
EndCallButtonTexture = EndCallButtonTextureFinder.Object;
}
static ConstructorHelpers::FObjectFinder<UTexture2D>
AudioButtonMuteTextureFinder(TEXT("Texture'/Game/ButtonTextures/mute.mute'"));
if (AudioButtonMuteTextureFinder.Succeeded())
{
AudioButtonMuteTexture = AudioButtonMuteTextureFinder.Object;
}
static ConstructorHelpers::FObjectFinder<UTexture2D>
AudioButtonUnmuteTextureFinder(TEXT("Texture'/Game/ButtonTextures/unmute.unmute'"));
if (AudioButtonUnmuteTextureFinder.Succeeded())
{
AudioButtonUnmuteTexture = AudioButtonUnmuteTextureFinder.Object;
}
static ConstructorHelpers::FObjectFinder<UTexture2D>
VideomodeButtonCameraonTextureFinder(TEXT("Texture'/Game/ButtonTextures/cameraon.cameraon'"));
if (VideomodeButtonCameraonTextureFinder.Succeeded())
{
VideomodeButtonCameraonTexture = VideomodeButtonCameraonTextureFinder.Object;
}
static ConstructorHelpers::FObjectFinder<UTexture2D>
VideomodeButtonCameraoffTextureFinder(TEXT("Texture'/Game/ButtonTextures/cameraoff.cameraoff'"));
if (VideomodeButtonCameraoffTextureFinder.Succeeded())
{
VideomodeButtonCameraoffTexture = VideomodeButtonCameraoffTextureFinder.Object;
}
}
void UVideoCallWidget::InitButtons()
{
if (EndCallButtonTexture)
{
EndCallButton->WidgetStyle.Normal.SetResourceObject(EndCallButtonTexture);
EndCallButton->WidgetStyle.Normal.ImageSize = FVector2D(ButtonSizeX, ButtonSizeY);
EndCallButton->WidgetStyle.Normal.DrawAs = ESlateBrushDrawType::Type::Image;
EndCallButton->WidgetStyle.Hovered.SetResourceObject(EndCallButtonTexture);
EndCallButton->WidgetStyle.Hovered.ImageSize = FVector2D(ButtonSizeX, ButtonSizeY);
EndCallButton->WidgetStyle.Hovered.DrawAs = ESlateBrushDrawType::Type::Image;
EndCallButton->WidgetStyle.Pressed.SetResourceObject(EndCallButtonTexture);
EndCallButton->WidgetStyle.Pressed.ImageSize = FVector2D(ButtonSizeX, ButtonSizeY);
EndCallButton->WidgetStyle.Pressed.DrawAs = ESlateBrushDrawType::Type::Image;
}
EndCallButton->OnClicked.AddDynamic(this, &UVideoCallWidget::OnEndCall);
SetAudioButtonToMute();
MuteLocalAudioButton->OnClicked.AddDynamic(this, &UVideoCallWidget::OnMuteLocalAudio);
SetVideoModeButtonToCameraOff();
VideoModeButton->OnClicked.AddDynamic(this, &UVideoCallWidget::OnChangeVideoMode);
}










