• 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.0

https://www.reddit.com/r/unrealengine/comments/gphjjj/unable_to_compile_c_project_425/​www.reddit.com

  • 由于使用incredibuild导致的编译错误

在类似这个路径下:C:UsersusernameAppDataRoamingUnreal EngineUnrealBuildTool找到BuildConfiguration.xml文件打开,

加上这段:

<BuildConfiguration>

<bAllowXGE>false</bAllowXGE>

</BuildConfiguration>

参考:

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<class CPPSTRUCT>
struct TStructOpsTypeTraits : public TStructOpsTypeTraitsBase2
{};
struct FVector
{public:
};
template<>
struct TStructOpsTypeTraits<FVector> : 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<UPaladinAbilityEachEffectConfig*> EachEffect;

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

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

uint8 bOverride_Cursor : 1;

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

TEnumAsByte<EMouseCursor::Type> Cursor;

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

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

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

UPlayerInput::FlushPressedKeys

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

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

{

TSharedRef<SButton> CurButton = StaticCastSharedRef<SButton>(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<FFooDelegate>("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<UPaladinCharMovementComponent>(ACharacter::CharacterMovementComponentName))

  • 编辑器中调用类型选择接口
可以参考User Defined Structure Editor,GenerateHeaderRowContent函数中调用SNew(SPinTypeSelector..)

  • 遍历UScriptStruct中的property

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

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

  • PaperSprite不显示图片

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

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

  • FText可多行编辑

c++代码中:

ue4 4.24启动无响应_UE4项目问题集合相关推荐

  1. Eclipse启动无响应 停留在Loading workbench状态的解决办法

    为什么80%的码农都做不了架构师?>>>    Eclipse启动无响应 停留在Loading workbench状态 前两天休眠后机器非正常关机,重新启动后运行eclipse . ...

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

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

  3. Eclipse启动无响应,停留在Loading workbench状态

    转自:http://www.jems.me/blog/web/115-eclipse-starting-halted-when-loading-workbench.html 前两天休眠后机器非正常关机 ...

  4. Macbook matlab启动无响应问题解决方案

    问题 好几次启动 matlab,鼠标一直转圈,matlab总是无响应,每次只好强制退出. 解决方法 后来发现只要启动之前把输入法切换成英文就可以了.

  5. linux重启docker服务,如何解决Centos下Docker服务启动无响应,且输入docker命令无响应?...

    docker无法启动,执行启动docker的命令后会卡住无响应,只能执行crtl+c退出,之后执行任何docker相关命令也无响应 继续执行停止docker服务命令有响应,执行docker相关命令会提 ...

  6. wlan端口服务器无响应,wlan项目遇到的问题,总结

    现在我使用的设备都是Aruba MSR,MSA系列产品 debug dhcp调试DHCP协商过程 若AP能够不能正常获得IP地址,可能是ONU.OLT核心网的问题 通过查找,排错 调试过程是:AP能够 ...

  7. Jmeter点击启动无响应问题

    参考了一些文献,未保存已经无从考究,最后解决了,记录下解决方法 问题描述 使用解压版jmeter后,导入了一个别人的jmter文件(其余操作正常无误),发现点击绿色启动按钮无反应,会一闪而过. 解决方 ...

  8. ArcGIS License启动无响应

    根据对网上的总结以及个人的经验,首先建议关闭电脑的防火墙以及杀毒软件 如果点击启动,依然没有反应,建议在dos下进行启动,命令为: lmgrd -z -c service.txt 如果需要深入研究,可 ...

  9. Eclipse 启动无响应,启动慢解决

    转载:https://blog.csdn.net/wu450590103/article/details/80590268 1.进入workspace/.metadata/.plugins/ 2.将o ...

最新文章

  1. 【博客话题】我的Linux虽然年轻,但是已经喜欢上她了...
  2. 亿科影视管理系统1.2.0版以及1.0版本均有后门
  3. 每日一皮:程序员和黑客的区别
  4. 框架中要懂的一些术语
  5. Windows Server上用命令来起停IIS站点
  6. Solr服务器搭建与简单使用
  7. 二维数组和稀疏数组转化
  8. matlab 7.0布局,Matlab 7.0 装配指导
  9. Spring 事务和事务传播机制
  10. ESP8266-Arduino编程实例-LM75温度传感器驱动
  11. php 走马灯轮播,JavaScript_js实现DOM走马灯特效的方法,本文实例讲述了js实现DOM走马 - phpStudy...
  12. Oracle ORA-01861: literal does not match format string
  13. 个人“乱七八糟”笔记和摘要
  14. 华为快应用支持广告变现,加速商业化进程
  15. extjs google统计图
  16. Qt编写的复杂象棋程序 chessbroad.cpp 错误比较多
  17. 卫星位置计算小程序(C#版)
  18. Linux系统下工具软件的安装
  19. Eclipse搭建DL4J项目
  20. [数值计算-12]:什么是函数逼近:插值、拟合、回归

热门文章

  1. 【牛腩新闻发布系统】系统发布06
  2. java 16进制与图片互转
  3. 服务化部署框架Paddle Serving
  4. 交通信号灯检测与行人过马路策略
  5. 2021年大数据ELK(十二):Elasticsearch编程(环境准备)
  6. Centos7 下安装VIM编辑器
  7. 关于Python爬虫原理和数据抓取1.1
  8. Docker核心技术之网络管理
  9. SVN无法CO检出web目录
  10. 【CV】深度学习中Epoch, Batch, Iteration的含义