武漢做網(wǎng)站制作google網(wǎng)頁版入口
目錄
游戲類
三種時(shí)間函數(shù)類型函數(shù)和提示類型
FName、FString、FText類型相互轉(zhuǎn)化
數(shù)組容器
鍵值容器
集合容器
基本類型打印
UPROPERTY宏
函數(shù)
枚舉?
法1
?法2
?結(jié)構(gòu)體
其他
藍(lán)圖生成時(shí)暴露
游戲類
1.創(chuàng)建所需項(xiàng)的類
2.創(chuàng)建游戲模式類,在該類上實(shí)現(xiàn)所需項(xiàng),引入頭文件和構(gòu)造函數(shù)時(shí)實(shí)例化
三種時(shí)間函數(shù)類型函數(shù)和提示類型
FName、FString、FText類型相互轉(zhuǎn)化
?FName用FName
FString用ToString()
FText用FText::FromString、FromName
//轉(zhuǎn)化
FString MyString = TEXT("I am String");
FName MyName = FName("I am Name");
FString x = TEXT("I am a FString");
FText MyText = FText::FromString(x);//FString-》FName
FName fName = FName(*MyString);//將string解引用為字符數(shù)組?
//FText->FName
fName = FName(*(MyText.ToString()));//FName->FString
FString fString = fName.ToString();
//FText->Fstring
fString = MyText.ToString();//FString-》FText
FText fText = FText::FromString(MyString);
//FName->FText
fText = FText::FromName(MyName);
數(shù)組容器
TArray<int>arr;
//增arr.Add(10);arr.Add(25);arr.Add(40);arr.Add(60);arr.AddUnique(35);arr.AddUnique(40);printArr();//刪arr.Remove(10);//移除10元素arr.RemoveSingle(40);//移除第一個(gè)40arr.RemoveAt(1);//移除第一個(gè)arr.Empty();//移除所有元素arr.Reset();//全部為0printArr();//改arr.Insert(80, 0);//在index處插入,原元素后移int& b = arr[0];b = 24;printArr();//查arr.Contains(10);//是否包含arr.Find(24);//是否包含,是返回index,不是返回-1arr.FindLast(24);
void ASGameMode::printArr() {for (auto It= arr.CreateConstIterator();It;It++){UE_LOG(LogTemp,Warning,TEXT("%d"),*It);GEngine->AddOnScreenDebugMessage(-1, 5.F, FColor::Blue, FString::Printf (TEXT("%d"),*It));}
}
鍵值容器
TMap<int, int>map;
map.Emplace(0, 1);map.Emplace(1, 3);map.Emplace(2, 5);//刪map.Remove(1);//按Key刪除map.Empty();//查找map.Contains(2);//按key查找int* isFind= map.Find(5);//找5,返回指針const int*isFindKey= map.FindKey(2);//值找鍵//獲取查找TArray<int>arrkey;TArray<int>arrayVal;map.GenerateKeyArray(arrkey);map.GenerateValueArray(arrayVal);
void ASGameMode::printmap()
{for (auto& TestMap:map) {GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, FString::Printf(TEXT("key:%d,Value:%d"), TestMap.Key,TestMap.Value));UE_LOG(LogTemp,Display,TEXT("key:%d,Value:%d"), TestMap.Key, TestMap.Value);}
}
集合容器
TSet<FString>FruitSet;
//增
FruitSet.Add(TEXT("Apple"));
FruitSet.Add(TEXT("Orange"));
FruitSet.Add(TEXT("Banana"));
FruitSet.Emplace("Purple");//比add好,在插入集合時(shí),避免創(chuàng)建臨時(shí)文件
PrintFruit();
TSet<FString> TestSet2;
TestSet2.Emplace(TEXT("aaa"));
TestSet2.Emplace(TEXT("bbb"));
TestSet2.Emplace(TEXT("ccc"));
FruitSet.Append(TestSet2);
PrintFruit();
FruitSet.Remove(TEXT("aaa"));
FruitSet.Reset();
FruitSet.Empty();
PrintFruit();
int32 len=FruitSet.Num();
bool isFind=FruitSet.Contains(TEXT("bbb"));
FString* isFind2=FruitSet.Find(TEXT("ccc"));TArray<FString> FruitArr = FruitSet.Array();TSet<FString>TS2 = { TEXT("a"),TEXT("aa") ,TEXT("aaa") ,TEXT("aaaa") };
//長(zhǎng)度排序
TS2.Sort([](FString A, FString B){return A.Len() > B.Len(); });
void ASGameMode::PrintFruit()
{for (auto& TestSet : FruitSet) {GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, FString::Printf(TEXT("%s"),* TestSet));UE_LOG(LogTemp, Display, TEXT("%s"), *TestSet);}
}
TSet<FString>MySet;
MySet.Add(TEXT("abc"));
FSetElementId index = MySet.Add(TEXT("bbc"));
MySet[index] = TEXT("abd");//預(yù)留內(nèi)存
TSet<FString> NewSet2;
NewSet2.Reserve(10);for (int32 i=0;i<10;i++)
{NewSet2.Add(FString::Printf(TEXT("No:%d"), i));
}
for (int32 i=0;i<10;i+=2)
{NewSet2.Remove(FSetElementId::FromInteger(i));
}
NewSet2.Shrink();//刪除末端空白元素
NewSet2.Compact();//刪除空白元素
基本類型打印
int32 myInt = 10;float myFloat = 5.f;bool myBool = true;char myChar = 'c';FString myString = TEXT("xxx");FVector myVector = FVector(1,1,1);UE_LOG(LogTemp,Display,TEXT("%d,%f,%d,%c,%s,%s"), myInt, myFloat, myBool, myChar, *myString, *myVector.ToString());
UPROPERTY宏
//在哪些地方可見
UPROPERTY(VisibleAnywhere)int32 Int32_VisibleAnywhere;
UPROPERTY(VisibleDefaultsOnly)int32 Int32_VisibleDefaultsOnly;
UPROPERTY(VisibleInstanceOnly)int32 Int32_VisibleInstanceOnly;//在哪些地方可編輯
UPROPERTY(EditDefaultsOnly)FVector V3_EditDefaultsOnly;
UPROPERTY(EditAnywhere)FVector V3_EditAnywhere;
UPROPERTY(EditInstanceOnly)FVector V3_EditInstanceOnly;//在藍(lán)圖中可get和getset
UPROPERTY(EditAnywhere,BlueprintReadOnly)int32 int32_EditAnywhere_BlueprintReadOnly;
UPROPERTY(EditAnywhere,BlueprintReadWrite)int32 int32_EditAnywhere_BlueprintReadWrite;//目錄
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyIntValue")int32 valueB1;//子目錄
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyIntValue|MySubIntValue")int32 ValueB2;//起別名
UPROPERTY(EditAnywhere,BlueprintReadWrite,meta=(DisplayName="displayName"))int32 ValueB3;//條件控制編輯,上者影響下者是否能修改
UPROPERTY(EditAnywhere,BlueprintReadWrite,meta=(DisplayName="Controller"))bool isController;
UPROPERTY(EditAnywhere,BlueprintReadOnly,meta=(EditCondition="isController"))float ValueB4;//變量提示
UPROPERTY(EditAnywhere,BlueprintReadOnly,meta=(ToolTip="isControllerTrue"))
bool isTrue;
函數(shù)
//暴露在藍(lán)圖,可調(diào)用
UFUNCTION(BlueprintCallable,category="MyFunction")
void PrintF1();
//純虛函數(shù),僅返回值
UFUNCTION(BlueprintCallable,BlueprintPure,category="MyFunction")
bool PrintF2();//不能定義(CPP不實(shí)現(xiàn)),只能重載
//無返回值的是事件、有返回值的是函數(shù)
UFUNCTION(BlueprintImplementableEvent)
void Test1();
UFUNCTION(BlueprintImplementableEvent)
int Test2();
UFUNCTION(BlueprintImplementableEvent)
void Test3(const FString &MyString);
UFUNCTION(BlueprintImplementableEvent)
int Test4(const FString& MyString);//在C++中聲明藍(lán)圖重載或不重載
//有連線-用連線的方法(重載),否則用CPP寫好的方法(不重載)
UFUNCTION(BlueprintNativeEvent)void TestA();
UFUNCTION(BlueprintNativeEvent)int TestB();
UFUNCTION(BlueprintNativeEvent)void TestC(const FString& MyString);
UFUNCTION(BlueprintNativeEvent)
int TestD(const FString& MyString);//起別名
UFUNCTION(BlueprintCallable,Category="MyFunction",meta=(Display="MyPrintTest"))void Printtest();
重載不重載那個(gè)要加_implementation
void AMyPawn::TestA_Implementation()
{
}void AMyPawn::TestB_Implementation()
{
}void AMyPawn::TestC_Implementation(const FString& MyString)
{UE_LOG(LogTemp, Display, TEXT("%s"), *MyString);
}void AMyPawn::TestD_Implementation(const FString& MyString)
{
}
枚舉?
位置同UCLASS
法1
UENUM(BlueprintType)
namespace MyEnumType
{enum MyCustomEnum {type1,type2,type3};
}
UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyEnum")TEnumAsByte<MyEnumType::MyCustomEnum> MyCustomEnumInst;
?法2
UENUM(BlueprintType)
enum class MyCustomEnum2 :uint8
{a UMETA(DisplayName="type1"),b UMETA(DisplayName="type2"),c UMETA(DisplayName="type3")
};
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MyCustomStruct")MyCustomEnum2 myCustomStruct;
??
?結(jié)構(gòu)體
//命名必須以F開頭
USTRUCT(BlueprintType)//作為藍(lán)圖類型,可被藍(lán)圖調(diào)用
struct FMyStruct
{GENERATED_USTRUCT_BODY()UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyTestStruct")int32 Health;UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyTestStruct")FString MyName;
};
//結(jié)構(gòu)體UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyCustomStruct")FMyStruct myCustomStruct;
其他
藍(lán)圖生成時(shí)暴露
//藍(lán)圖生成時(shí)暴露UPROPERTY(EditAnywhere,BlueprintReadWrite,Category="MyExposeOnSpawn",meta=(ExposeOnSpawn="ExposeOnSpawnValue"))float Health;