目录
2、 输出日记/消息到屏幕上--GEngine->AddOnScreenDebugMessage
一、打印输出日记/信息
1、输出日记/信息到编辑器控制台--UE_LOG
(1) 查看log:
编辑器模式:打开Log窗口(Window->Developer Tools->Output Log)
(2) 使用方法
UE_LOG(LogTemp, Error, TEXT("my name is okk"));
UE_LOG(LogTemp, Warning, TEXT("my name is okk"));
UE_LOG(LogTemp, Display, TEXT("my name is okk"));
第一个参数LogTemp:Log的分类。
1.LogTemp: 用于临时调试信息或快速测试。
2.LogGamePlay: 用于游戏运行时的事件和状态更新。
3.LogBlueprintUserMessages: 用于从蓝图中输出的用户消息。
4.LogOnline: 用于在线游戏模块相关的日志记录。
5.LogNavigation: 用于导航系统相关的日志记录。第二个参数为类型:有Log、Warning、Error三种类型。Log为灰色,Warning为黄色,Error为红色。
常用的符号:
- %s 字符串(FString)
- %d 整型数据(int32)
- %f 浮点型(float)
//基础数据类型的输出打印
int32 MyInt = 10;
float MyFloat = 5.f;
bool MyBool = true;
char MyChar = 'A';
FString MyString1 = TEXT("MyString1");
FVector MyVector = FVector(0, 0, 0);
UE_LOG(LogTemp, Warning, TEXT("%d"), MyInt);
UE_LOG(LogTemp, Warning, TEXT("%f"), MyFloat);
UE_LOG(LogTemp, Warning, TEXT("%d"), MyBool);
UE_LOG(LogTemp, Warning, TEXT("%c"), MyChar);
UE_LOG(LogTemp, Warning, TEXT("%s"), *MyString1);
UE_LOG(LogTemp, Warning, TEXT("%s"), *MyVector.ToString());
(3) 输出结果:
2、 输出日记/消息到屏幕上--GEngine->AddOnScreenDebugMessage
(1) 使用方法
//在UE的屏幕中中打印,相当于蓝图中的printf函数
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, TEXT("my name is ok"));
void UEngine::AddOnScreenDebugMessage(int32 Key, float TimeToDisplay, FColor DisplayColor, const FString& DebugMessage, bool bNewerOnTop, const FVector2D& TextScale)
{
AddOnScreenDebugMessage((uint64)Key, TimeToDisplay, DisplayColor, DebugMessage, bNewerOnTop, TextScale);
}
第一个参数 -1 表示这个消息的键。使用 -1 会使消息显示在屏幕上,但不会替换任何现有消息。如果你使用特定的键(例如 1),那么使用该键的任何后续消息都会替换先前的消息。
第二个参数 5.f 是消息在屏幕上的持续时间(以秒为单位)。
第三个参数 FColor::Blue 是消息的颜色。
最后一个参数是要显示的实际文本消息。
(2) 输出结果:
二、变量类型
//布尔类型变量声明
bool varBool;
//整型32位变量声明
int32 varInt32;
//整型64为变量声明
int64 varInt64;
//浮点16位变量声明
FFloat16 varFloat16;
//浮点32位变量声明
FFloat32 varFloat32;
//浮点双精度变量声明
double varDouble;
//字节类型变量声明
BYTE varByte;
//字符串变量声明
FString varString;
//命名变量声明
FName varName;
//文本变量声明
FText varText;
//向量类型变量声明
FVector varVector;
//旋转类型变量声明
FRotator varRotator;
//变换类型变量声明
FTransform varTransform;
void AMyGameMode::dataType()
{
int MyInt = 0;
float MyFloat = 5.0f;
bool MyBool = true;
FString MyFString =TEXT("A");
char MyChar = 'a';
FVector MyVector = FVector(0, 0, 0);
UE_LOG(LogTemp, Warning, TEXT("%d"), MyInt);
UE_LOG(LogTemp, Warning, TEXT("%f"), MyFloat);
UE_LOG(LogTemp, Warning, TEXT("%d"), MyBool);
UE_LOG(LogTemp, Warning, TEXT("%c"), MyChar);
UE_LOG(LogTemp, Warning, TEXT("%s"), *MyFString);
UE_LOG(LogTemp, Warning, TEXT("%s"), *MyVector.ToString());
}
运行结果:
三、Fstring、FName、FText的相互转换
FString MyStr = "i am string";
//Fstring转换为FName
FName MyName = FName(*MyStr);
//Fstring 转换为FText
FText MyText = FText::FromString(MyStr);
//FName转为FString
MyStr = MyName.ToString();
//Fname转为FText
MyText = FText::FromName(MyName);
//Ftext转为Fstring
FString strFromText = MyText.ToString();
四、TArray
TArray<int> MyArray;
//增
MyArray.Add(0);
MyArray.Add(1);
MyArray.Add(2);
MyArray.Add(2);
MyArray.AddUnique(3);//将数组中不存在的元素添加到数组中 0 1 2 2 3
MyArray.AddUnique(2);
//删
MyArray.Remove(2);//移除所有数组中等值的元素 0 1 3
MyArray.RemoveAt(0);//移除数组中索引值为0的元素 1 3
MyArray.RemoveSingle(1);//移除数组中首个匹配的元素 3
MyArray.Empty();//清空元素
MyArray.Reset();//重置我们所有的元素变为0
//改
MyArray.Insert(10, 0);//在数组中第0个插入一个元素10
int &temp=MyArray[0];
temp = 50;
//查
MyArray.Contains(10);//查找数组中是否包含了某个元素
MyArray.Find(10);//正向查找数组中匹配的第一个
MyArray.FindLast(10);//反向
五 、TMap
TMap<int, FString> MyMap;
TMap<int, int> MyMap1;
//增
MyMap.Add(0, "a");
MyMap.Emplace(1, "b");
MyMap1.Emplace(0, 0);//用法和add一样,都是添加元素
MyMap1.Emplace(1, 2);
//删
MyMap.Remove(0);//移除key值为0的元素
MyMap.Empty();//移除所有的元素
//改
MyMap1.Emplace(1, 10);
//查
MyMap.Contains(1);//查找匹配的KEY值,返回布尔值
FString *tempValue=MyMap.Find(0);//通过key找Value,返回的是指针
const int* tempKey = MyMap.FindKey("a");//通过value找Key,返回的也是指针
//分别获取keys和values
TArray<int> TestKeys;
TArray<FString> TestValues;
MyMap.GenerateKeyArray(TestKeys);
MyMap.GenerateValueArray(TestValues);
使用迭代器遍历map
//写法1:遍历map,将所有key值打印出来
for (auto ite=MyMap.begin();ite!=MyMap.end();++ite)
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT("%d"),ite.Key()));
}
//写法2:遍历map,将所有key值和value打印出来
for (auto& mymap:MyMap1)
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT("Key: %d""Value: %d"),mymap.Key,mymap.Value));
}