debugeditor模式下,在LoadPackage过程中crash,vs报出Stack overflow的错误

这是由于Package层数过多,vs栈不够用导致的。而ue4用UBT导致不能直接修改项目的栈大小。之前项目后期就因为这个崩溃导致大家没法再用debug模式进行开发。直接的解决办法是修改UEBuildWindows.cs中的LinkEnvironment.DefaultStackSize,这里默认赋值为Target.WindowsPlatform.DefaultStackSize,代码跟了一下我这边环境该值是5MB,我这里直接将其乘以3,项目启动成功。https://answers.unrealengine.com/questions/750298/how-to-increase-stack-size-for-unreal-engine.html​answers.unrealengine.com

角色行走过程中胶囊体与别的物体发生碰撞时,Hit信息中并没有附带物理材质的信息

这是因为默认情况下胶囊体的bReturnMaterialOnMove为false,改为true就有了。

这个碰撞信息是在移动组件中先创建FCollisionResponseParams变量,然后进行碰撞查询时产生的,详情见UPrimitiveComponent::InitSweepCollisionParams,断点调试流程。

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导致的编译错误

在类似这个路径下: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然后调用c++标注的placement new:

char* buf = new char[sizeof(A) * 3];//申请了3个A的内存

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

引擎中关于接口与模板的一个用法:

struct TStructOpsTypeTraitsBase2{

enum

{

WithZeroConstructor = false,

WithNoInitConstructor = false,

};

};

template

struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2

{

};

struct FVector

{

public:

};

template<>

struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2{

enum

{

WithNoInitConstructor = true,

};

};

TMap循环中删除迭代器

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

{

if()

{

it.RemoveCurrent();

}

}

ClassWithin的理解?

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

该类实例的Outer必须是什么类型

什么是Native函数

Native函数指的是在C++有函数体实现的函数,而蓝图中的函数和BlueprintImplementableEvent的函数就不是Native函数。

UObject可编辑

UCLASS(DefaultToInstanced, editinlinenew)

UPROPERTY(EditInstanceOnly, Instanced)

TArray EachEffect;

编辑器bool属性作为编辑条件显示在其他属性中而不单独占一行

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

uint8 bOverride_Cursor : 1;

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

TEnumAsByte<:type> Cursor;

编辑器根据某枚举变量更改其他变量是否可编辑

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

切换controller的时候 输入持续回掉的bug解决办法:

UPlayerInput::FlushPressedKeys

智能指针的cast 这个cast并不会因为转换失败而为空 正确使用方式如:

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

{

TSharedRef CurButton = StaticCastSharedRef(InWidget);

}

参考SharedPointerTesting.h了解更多

编译引擎的时候GetReferenceNearesttargetframeworktask

安装VS2017的时候 选中"NuGet package manager"

蓝图节点使用Latent/async action

要重写getworld 注意GetOuter()->GetWorld();有可能Outer本身未重写GetWorld 就会导致没用

模板代理的例子 用在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);

}

多个UObject实例作为key的map

按照以多个UObject实例作为key的map,当这多个UObject实例的值都相同时满足查找,例子:FGCNotifyActorKey中用到FObjectKey

模板Lerp

FMath::Lerp

UE4源码关于组合键的解决方案函数

UPlayerInput::GetChordsForKeyMapping

ue4输入响应先后顺序

PlayerController->LevelBP(包括子关卡)->Pawn

SWidget的cast

可以使用GetType()先得到类型,再调用static_cast<>静态转换

ue4 userwidget中对子widget查找:

每个userwidget中有UWidgetTree,这个类构建树形结构,同时负责相关查找

ue4 userwidget导航蓝图编辑:

UWidget成员变量:class UWidgetNavigation* Navigation;

注意这个类的UPROPERTY以及这个类本身的定义部分,由各个方向的FWidgetNavigationData构成

由于操作错误 PaperSprite导入时在文件名加索引产生新的文件的问题

详细见源码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);

}

可知,当TargetSprite为空时,就会产生一个新的Package。而这个新的Package就是Unique的。

设计模式之访问者模式在UE4中的使用

UE4序列化

判断在游戏中

FApp::IsGame()

游戏暂停后 摄像机移动时的模糊

ACameraManager::ApplyCameraModifiers时默认的PostProcessSettings带有MotionBlurAmount不为0

可以自定义一个CameraManager写一个成员变量PausePostProcessSetting 将其配置为0 然后在这个重载函数中:

if (UGameplayStatics::IsGamePaused(this))

{

InOutPOV.PostProcessSettings = PausePostProcessSetting;

}

如何让基类使用派生类指定的类型创建成员变量

APaladinCharacterBase::APaladinCharacterBase(const FObjectInitializer& Initializer)

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

编辑器中调用类型选择接口

可以参考User Defined Structure Editor,GenerateHeaderRowContent函数中调用SNew(SPinTypeSelector..)

遍历UScriptStruct中的property

参考FItemPropertyNode::InitChildNodes 属性编辑器中结构体成员变量的默认变量

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

PaperSprite不显示图片

如图这样一个资源 分辨率为1076*10 导入引擎后作为papersprite就不显示,原因参考源码:

理解这段源码,意思是如果图片宽高比超过100,就会判定为是一条“线”,就不会继续后续操作继而不显示。

FText可多行编辑

c++代码中:

ue4集合类型_UE4项目问题集合相关推荐

  1. python中的集合类型_Python中的集合类型知识讲解

    >>> s.add('z') >>> s set(['c', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.updat ...

  2. ue4集合类型_UE4粒子系统渲染管线概述

    本文基于UE4版本4.25.3,对Cascade粒子系统的移动端渲染管线进行简单的概括和描述. Game Thread部分 粒子系统Actor被Spawn(或所在的Level被加载)的时候,UPart ...

  3. ue4集合类型_UE4.22 Subsystem分析

    2019年4月2日,UE4.22版本正式发布,其中包含了很多新的特性,Subsystem(子系统)便是其中之一,这篇文章将分析Subsystem的用法以及实现原理. 概述 Subsystem(子系统) ...

  4. ue4 4.24启动无响应_UE4项目问题集合

    debugeditor模式下,在LoadPackage过程中crash,vs报出Stack overflow的错误 这是由于Package层数过多,vs栈不够用导致的.而ue4用UBT导致不能直接修改 ...

  5. ue4集合类型_UE4材质参数集

    我们今天给大家分享的是UE4中的材质参数集,这个参数集合有什么用了?哈哈它的用处可大了,我们如果在调节一个材质的时候,如果这几个材质里面都有一个相同的材质属性,如果我们按照传统的方法来进行修改太慢了, ...

  6. Scala中集合类型与java中集合类型转换

    对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...

  7. Oracle PL/SQL开发基础(第十七弹:集合类型)

    集合是PL/SQL提供的用来同时处理多个数据的一种数据结构.如果说记录是一个单行多列的数据结构,那么集合就是一种单列多行的数据结构. 集合简介 集合类似于高级语言中的列表或一维数组,主要用来存储具有相 ...

  8. PL/SQL三种集合类型的比较

    PL/SQL三种集合类型的比较<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  9. python集合类型的四种操作符_深入解析Python中的集合类型操作符

    (1)标准类型操作符(所有的集合类型) 成员关系 (in, not in) 就序列而言,Python中的in和not in操作符决定某个元素是否是一个集合中的成员. 集合等价/不等价 等价/不等价被用 ...

最新文章

  1. go语言json的使用技巧
  2. CCNet 的 Build 流程
  3. Androidstudio 使用git插件提交代码
  4. 微信小程序——真机调试方法(vConsole)
  5. 蠢货别忘(一)common lisp funcall
  6. 【牛客 - 303B第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Fibonacci and Counting(Fib数性质,gcd辗转相除法性质)
  7. android 关于关于子线程更新UI的一些事
  8. 电脑有网络计算机共享怎么用,2台电脑怎么共享文件?没有网络也能共享【详解】...
  9. Netty学习总结(4)——图解Netty之Pipeline、channel、Context之间的数据流向
  10. UVA960 Gaussian Primes【数学】
  11. Brettle.Web.NeatUpload.dll大文件上传控件使用详解
  12. 蓝桥杯备战(一)3n+1问题
  13. Linux 软件包管理器 rpm
  14. png图片背景转换成透明
  15. TensorFlow Ranking框架在海外推荐业务中的实践与应用
  16. 本田思域自动挡挡位图解,思域换挡操作技巧
  17. 虹科蕴藏在废物分类中的机器人技术革命
  18. 海信在柏林IFA推出8K叠屏和屏幕发声激光电视
  19. Java使用EasyExcel下载xls、xlsx 出现文件格式与扩展名不匹配(亲测)
  20. HNU实验五05阿迪看医生

热门文章

  1. python中扑克牌类设计_Python中的计数 Counter类
  2. 配置tomcat_Tomcat 配置必备的 10 个小技巧,让你轻松玩转Tomcat
  3. Android fragmnet标签,在Android中为Fragment添加标签?
  4. android jni 结构体_Android应用开发Android JNI-c/c++调用java方法
  5. excel进销存管理系统_【实例分享】勤哲Excel服务器做企业进销存财务管理系统...
  6. Retrofit学习入门
  7. CompletableFuture详解~anyOf
  8. android使用 注解框架,Android实践 | 注解框架ButterKnife基本使用
  9. java静态页面我都做不出_Java高并发:静态页面生成方案
  10. Modbus协议栈应用实例之一:Modbus RTU主站应用