日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ue4集合类型_UE4项目问题集合

發(fā)布時(shí)間:2024/7/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ue4集合类型_UE4项目问题集合 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

debugeditor模式下,在LoadPackage過程中crash,vs報(bào)出Stack overflow的錯(cuò)誤

這是由于Package層數(shù)過多,vs棧不夠用導(dǎo)致的。而ue4用UBT導(dǎo)致不能直接修改項(xiàng)目的棧大小。之前項(xiàng)目后期就因?yàn)檫@個(gè)崩潰導(dǎo)致大家沒法再用debug模式進(jìn)行開發(fā)。直接的解決辦法是修改UEBuildWindows.cs中的LinkEnvironment.DefaultStackSize,這里默認(rèn)賦值為Target.WindowsPlatform.DefaultStackSize,代碼跟了一下我這邊環(huán)境該值是5MB,我這里直接將其乘以3,項(xiàng)目啟動成功。https://answers.unrealengine.com/questions/750298/how-to-increase-stack-size-for-unreal-engine.html?answers.unrealengine.com

角色行走過程中膠囊體與別的物體發(fā)生碰撞時(shí),Hit信息中并沒有附帶物理材質(zhì)的信息

這是因?yàn)槟J(rèn)情況下膠囊體的bReturnMaterialOnMove為false,改為true就有了。

這個(gè)碰撞信息是在移動組件中先創(chuàng)建FCollisionResponseParams變量,然后進(jìn)行碰撞查詢時(shí)產(chǎn)生的,詳情見UPrimitiveComponent::InitSweepCollisionParams,斷點(diǎn)調(diào)試流程。

Error MSB3073 The command "chcp 65001 >NUL

降低vs版本到vs2019 Version 16.5.0https://www.reddit.com/r/unrealengine/comments/gphjjj/unable_to_compile_c_project_425/?www.reddit.com由于使用incredibuild導(dǎo)致的編譯錯(cuò)誤

在類似這個(gè)路徑下:C:\Users\username\AppData\Roaming\Unreal Engine\UnrealBuildTool找到BuildConfiguration.xml文件打開,

加上這段:

false

參考:http://yekdniwunrealengine.blogspot.com/2017/11/incredibuild.html?yekdniwunrealengine.blogspot.com

ue4中new對象的操作是先allocateobject然后調(diào)用c++標(biāo)注的placement new:

char* buf = new char[sizeof(A) * 3];//申請了3個(gè)A的內(nèi)存

A* pc = new(buf)A();

引擎中關(guān)于接口與模板的一個(gè)用法:

struct TStructOpsTypeTraitsBase2{

enum

{

WithZeroConstructor = false,

WithNoInitConstructor = false,

};

};

template

struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2

{

};

struct FVector

{

public:

};

template<>

struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2{

enum

{

WithNoInitConstructor = true,

};

};

TMap循環(huán)中刪除迭代器

for (TMap::TIterator it(Map); it; ++it)

{

if()

{

it.RemoveCurrent();

}

}

ClassWithin的理解?

/** The required type for the outer of instances of this class */

該類實(shí)例的Outer必須是什么類型

什么是Native函數(shù)

Native函數(shù)指的是在C++有函數(shù)體實(shí)現(xiàn)的函數(shù),而藍(lán)圖中的函數(shù)和BlueprintImplementableEvent的函數(shù)就不是Native函數(shù)。

UObject可編輯

UCLASS(DefaultToInstanced, editinlinenew)

UPROPERTY(EditInstanceOnly, Instanced)

TArray EachEffect;

編輯器bool屬性作為編輯條件顯示在其他屬性中而不單獨(dú)占一行

UPROPERTY(EditAnywhere, Category="Behavior", meta=(InlineEditConditionToggle))

uint8 bOverride_Cursor : 1;

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category="Behavior", AdvancedDisplay, meta=( editcondition="bOverride_Cursor" ))

TEnumAsByte<:type> Cursor;

編輯器根據(jù)某枚舉變量更改其他變量是否可編輯

bool FPaladinAbilityEachEffectConfig::CanEditChange(const UProperty* InProperty) const

切換controller的時(shí)候 輸入持續(xù)回掉的bug解決辦法:

UPlayerInput::FlushPressedKeys

智能指針的cast 這個(gè)cast并不會因?yàn)檗D(zhuǎn)換失敗而為空 正確使用方式如:

if (InWidget->GetType() == FName(TEXT("SButton")))

{

TSharedRef CurButton = StaticCastSharedRef(InWidget);

}

參考SharedPointerTesting.h了解更多

編譯引擎的時(shí)候GetReferenceNearesttargetframeworktask

安裝VS2017的時(shí)候 選中"NuGet package manager"

藍(lán)圖節(jié)點(diǎn)使用Latent/async action

要重寫getworld 注意GetOuter()->GetWorld();有可能Outer本身未重寫GetWorld 就會導(dǎo)致沒用

模板代理的例子 用在PlayerInputComponent->BindAction

class AMyCharacter : public ACharacter

{

void Foo(int32 idx);

DECLARE_DELEGATE_OneParam(FFooDelegate, int32);

};

void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInput)

{

PlayerInput->BindAction("Foo", IE_Pressed, this, &AMyCharacter::Foo, 42);

}

多個(gè)UObject實(shí)例作為key的map

按照以多個(gè)UObject實(shí)例作為key的map,當(dāng)這多個(gè)UObject實(shí)例的值都相同時(shí)滿足查找,例子:FGCNotifyActorKey中用到FObjectKey

模板Lerp

FMath::Lerp

UE4源碼關(guān)于組合鍵的解決方案函數(shù)

UPlayerInput::GetChordsForKeyMapping

ue4輸入響應(yīng)先后順序

PlayerController->LevelBP(包括子關(guān)卡)->Pawn

SWidget的cast

可以使用GetType()先得到類型,再調(diào)用static_cast<>靜態(tài)轉(zhuǎn)換

ue4 userwidget中對子widget查找:

每個(gè)userwidget中有UWidgetTree,這個(gè)類構(gòu)建樹形結(jié)構(gòu),同時(shí)負(fù)責(zé)相關(guān)查找

ue4 userwidget導(dǎo)航藍(lán)圖編輯:

UWidget成員變量:class UWidgetNavigation* Navigation;

注意這個(gè)類的UPROPERTY以及這個(gè)類本身的定義部分,由各個(gè)方向的FWidgetNavigationData構(gòu)成

由于操作錯(cuò)誤 PaperSprite導(dǎo)入時(shí)在文件名加索引產(chǎn)生新的文件的問題

詳細(xì)見源碼FPaperJsonSpriteSheetImporter::PerformImport

if (bIsReimporting)

{

TargetSprite = FindExistingSprite(Frame.FrameName.ToString());

}

if (TargetSprite == nullptr)

{

AssetToolsModule.Get().CreateUniqueAssetName(TentativePackagePath, DefaultSuffix, /*out*/ PackageName, /*out*/ AssetName);

OuterForFrame = CreatePackage(nullptr, *PackageName);

}

可知,當(dāng)TargetSprite為空時(shí),就會產(chǎn)生一個(gè)新的Package。而這個(gè)新的Package就是Unique的。

設(shè)計(jì)模式之訪問者模式在UE4中的使用

UE4序列化

判斷在游戲中

FApp::IsGame()

游戲暫停后 攝像機(jī)移動時(shí)的模糊

ACameraManager::ApplyCameraModifiers時(shí)默認(rèn)的PostProcessSettings帶有MotionBlurAmount不為0

可以自定義一個(gè)CameraManager寫一個(gè)成員變量PausePostProcessSetting 將其配置為0 然后在這個(gè)重載函數(shù)中:

if (UGameplayStatics::IsGamePaused(this))

{

InOutPOV.PostProcessSettings = PausePostProcessSetting;

}

如何讓基類使用派生類指定的類型創(chuàng)建成員變量

APaladinCharacterBase::APaladinCharacterBase(const FObjectInitializer& Initializer)

:Super(Initializer.SetDefaultSubobjectClass(ACharacter::CharacterMovementComponentName))

編輯器中調(diào)用類型選擇接口

可以參考User Defined Structure Editor,GenerateHeaderRowContent函數(shù)中調(diào)用SNew(SPinTypeSelector..)

遍歷UScriptStruct中的property

參考FItemPropertyNode::InitChildNodes 屬性編輯器中結(jié)構(gòu)體成員變量的默認(rèn)變量

for( TFieldIterator It(StructProperty->Struct); It; ++It )

PaperSprite不顯示圖片

如圖這樣一個(gè)資源 分辨率為1076*10 導(dǎo)入引擎后作為papersprite就不顯示,原因參考源碼:

理解這段源碼,意思是如果圖片寬高比超過100,就會判定為是一條“線”,就不會繼續(xù)后續(xù)操作繼而不顯示。

FText可多行編輯

c++代碼中:

總結(jié)

以上是生活随笔為你收集整理的ue4集合类型_UE4项目问题集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。