UE4C++(13):输出打印消息

10/19/2020

输出日志

打印消息到视口的左上角:

#include "Engine/Engine.h"

if(GEngine)
{
   
	GEngine->AddOnScreenDebugMessage(-1,4.0f,FColor::Red,SpawnLocation.ToString());
}
  • GEngine 全局指针
  • 第一个参数:-1表示无需更新刷新此消息,0表示刷新消息
  • 第二个参数:消息显示多久
  • 第三个参数: 消息显示的颜色
  • 第四个参数:消息内容,类型FString格式

输出消息

UE_LOG

打印消息到输出日志中

//临时标签的输出
UE_LOG(LogTemp,Log,TEXT("Message"));
  • 第一个参数:标签
  • 第二个参数:显示颜色和严重级别
  • 第三个参数:消息内容

自定义标签

打开Window->Developer Tool->Output Log查看输出内容


//.h 头文件声明标签 叫Gun
DECLARE_LOG_CATEGORY_EXTERN(Gun, Log, All);

//.cpp 
DEFINE_LOG_CATEGORY(Gun);

//输出
UE_LOG(Gun,Error,TEXT("THIS IS MESSAGE!"));

输出

输出格式TCHAR*

UE_LOG 使用和printf一样的格式化输出形式,需要输出TChar*类型

TestHUDString
UE_LOG(LogClass, Log, TEXT("This is a testing statement. %s"), *TestHUDString);

UE_LOG(LogClass, Log, TEXT("This is a testing statement. %s"), *FVectorName.ToString());

注意解析号,需要把FString类型转换成TChar 类型

例子

FString healthMessage = FString::Printf(TEXT("You now have %f health remaining."), CurrentHealth);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, healthMessage);

//int TotalBeans = 10;
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT("TotalBeans: %d"
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UE4中,可以使用UDP(User Datagram Protocol)多播来实现网络通信。UDP多播是一种一对多的通信方式,允许一个主机向多个目标主机发送数据。 下面是一个简单的示例,演示如何使用UE4C++来实现UDP多播的收发消息。 首先,在UE4中创建一个C++项目,并在项目中添加以下代码: ```cpp #include "UdpSocket.h" #include "UdpSocketReceiver.h" void AUdpMulticastTest::BeginPlay() { Super::BeginPlay(); // 创建UDP套接字 FUdpSocketReceiver* SocketReceiver = new FUdpSocketReceiver(Socket, FTimespan::FromMilliseconds(100), TEXT("UDPReceiverThread")); if (SocketReceiver != nullptr) { // 绑定UDP套接字 FIPv4Endpoint Endpoint(FIPv4Address::Any, 12345); Socket->Bind(Endpoint); // 开始接收消息 SocketReceiver->Start(); } } void AUdpMulticastTest::EndPlay(const EEndPlayReason::Type EndPlayReason) { // 关闭UDP套接字 if (Socket != nullptr) { Socket->Close(); ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->DestroySocket(Socket); Socket = nullptr; } Super::EndPlay(EndPlayReason); } void AUdpMulticastTest::HandleReceivedData(const FArrayReaderPtr& Data, const FIPv4Endpoint& SenderEndpoint) { FString Message; *Data << Message; UE_LOG(LogTemp, Log, TEXT("Received message: %s"), *Message); } void FUdpSocketReceiver::Tick(float DeltaTime) { Super::Tick(DeltaTime); if (!Socket) return; TSharedPtr<FInternetAddr> SenderAddress = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM)->CreateInternetAddr(); uint32 Size; while (Socket->HasPendingData(Size)) { TArray<uint8> ReceivedData; ReceivedData.SetNumUninitialized(FMath::Min(Size, 65507u)); int32 Read = 0; Socket->RecvFrom(ReceivedData.GetData(), ReceivedData.Num(), Read, *SenderAddress); if (Read > 0) { FArrayReaderPtr Reader = MakeShareable(new FArrayReader(ReceivedData)); Reader->SetNum(Read); HandleReceivedData(Reader, FIPv4Endpoint(SenderAddress)); } } } ``` 在这段代码中,我们首先创建了一个UDP套接字,并将其绑定到本地IP地址和端口号12345上。然后,我们使用FUdpSocketReceiver类来接收UDP消息。当我们接收到消息时,会将消息内容打印UE4的日志中。 接下来,我们可以使用以下代码来发送UDP消息: ```cpp void AUdpMulticastTest::SendUdpMessage(const FString& Message, const FString& MulticastAddress, int32 Port) { TSharedRef<FInternetAddr> Address = CreateInternetAddr(); Address->SetIp(*MulticastAddress, false); Address->SetPort(Port); const TCHAR* MessageData = *Message; int32 Size = FCString::Strlen(MessageData); int32 Sent = 0; Socket->SendTo((const uint8*)TCHAR_TO_UTF8(MessageData), Size, Sent, *Address); } ``` 在这段代码中,我们首先创建了一个FInternetAddr实例,并将其设置为多播地址和端口号。然后,我们使用UDP套接字的SendTo方法将消息发送到指定的地址和端口号。 通过以上代码,我们就可以在UE4C++中实现UDP多播的收发消息了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值