UE4中自己遇到的坑/问题/疑惑

使用浏览器的查找命令 (Crtl + f) 能够更方便查询,我尽量将每个问题的标签写全

在C++中能访问没有定义访问修饰符的成员(C++中没定义的类默认是Private结构体是Public)

问题原描述

  • 给角色添加摄像机摇臂(SpringArm)时发现能够直接访问未声明访问修饰符的成员,如TargetArmLength。

遇到疑问的代码:

AMyCharacter::AMyCharacter()
{
    Arm->TargetArmLength = 170.f;
}

部分源码:

class ENGINE_API USpringArmComponent : public USceneComponent
{   
    GENERATED_UCLASS_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Camera)
    float TargetArmLength;

    ···
}
  • 原因就是GENERATED_UCLASS_BODY()宏。这个宏下面的成员默认为Public,这是一个不推荐使用的宏,应该使用GENERATED_BODY()替换,但是引擎源码大部分都使用的这个宏,属于遗留问题。

在函数中不带Const的引用在蓝图中默认是输出引脚

可以在参数前面添加UPARAM(ref)宏


参考链接:UE4-answers

枚举 Enum

UENUM()
enum ETest1
{
    T1_A            =0,
    T1_B            =1,
};
UENUM()
enum class ETest2 : uint8
{
    T2_A,
    T2_B,
};
UENUM()
namespace ETest3
{
    enum Type
    {
      T3_A,
      T3_B,
    };
}

行为树中的中断(Abort)

  1. 装饰器Blackboard可以通过检查值来中断其子分支的任务,观察者终止条件设为Self。
    但是我在使用自定义的Task时,并没有成功终止任务,其原因是需要覆写ReceiveAbort并调用FinishAbort。


  2. 在行为树的中断中执行StopMovement函数会导致在停止播放后引发崩溃。(4.21)


    崩溃栈

UE4 蓝图中函数(Function),纯虚函数(PureFunction),自定义事件(CustomEvent),蓝图宏(BlueprintMacro)以及事件调度器的区别

点这里

对UserWidget(UMG)添加BPInterface蓝图接口时崩溃问题(4.17)

原因是Interface中的函数命名与Widget中的某个变量相同,修改函数名字就可以解决了。

场景中远处的Shadow(阴影)消失问题

当Mesh的移动性为可移动时(非静态烘焙),Mesh的阴影可见性取决于Mesh的大小及其与相机的距离

修改平行光中有关CascadedShadowMaps(联级阴影)
  • NumDynamicShadowCasades
  • CascadeDistributionExponent
  • CascadeTranstitionFraction
  • ShadowDistanceFadeoutFraction
其他可调整的参数:
r.Shadow.FadeResolution
  • 控制在开始淡出之前光线在屏幕上的大小。
  • 默认值:64
  • 可以降低此值以防止阴影在更远的距离逐渐消失
r.Shadow.MinResolution
  • 控制光线在完全淡出之前必须在屏幕上显示的大小,此时它不再显示有成本。
  • 默认值:32
  • 较低的值似乎会增加阴影可见度。
r.Shadow.MaxResolution
  • 默认值:1024
r.Shadow.TexelsPerPixel
  • 分配更高的分辨率,然后它应该不那么积极地淡出
  • 默认值:1.27324
  • 可以增加此值以改善阴影渲染可见性和质量
r.Shadow.RadiusThreshold
  • 默认值:0.03
  • 较低的值0.02或0.01会大大增加远距离摄像机距离的阴影可见度(显著提升)。

除了在命令行中修改值之外,你也可以将其保存在 [DefaultEngine.ini] 文件内 [/Script/Engine.RendererSettings] 目录中

参考链接:

对ProjectileMovement的Actor使用IgnoreActorWhenMoving时依旧被阻挡的问题。

如果弹丸启用了模拟物理 会失效
如果被碰撞到的物体启用了模拟物理 会失效

在场景中(非运行状态)蓝图Actor中的构造函数中只会读取Component属性的默认值

在使用ProjectileMovement的子弹时,射击迎面快速移动的物体时,bInitialOverlap始终为true。

Pawn的AtuoPossessAI不能正确在ChildActorComponent中生成

注意,在SpawnActor(放置在关卡中是没问题的,动态生成才会出现此问题)中

在输出日志中可以找出如下警告

Warning: SpawnActor failed because we are running a ConstructionScript (class name)

解决办法:将原本在PostInitialComponents()中调用的SpawnDefaultController()函数在BeginPlay()中再调用一次,你得自己处理是否需要Controller的逻辑。


Tick in Editor 在编辑器中Tick

对于Actor:

virtual bool AActor::ShouldTickIfViewportsOnly() const override { return true; }

覆写此函数。
启用Realtime 或打开定序器


对于ActorComponent只需要启用TickInEditor并且不需用启用RealTime
*需要注意,对于MovementComponent而言,你还需要关闭bAutoUpdateTickRegistration,不然你会在在某些情况下失去Tick

UActorComponent::bTickInEditor = true;
//UMovementComponent::bAutoUpdateTickRegistration = false;
MovementCompnent.cpp 失去Tick的原因
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • 最近真的被盲审这两个字弄懵逼了,才发现自己这三年来什么都没学。真的应验了那句老话出来混迟早要还的,可是这个节骨眼上...
    mountebank阅读 210评论 0 0
  • 文/璟乾 我不知道人生的路会走成怎样,只知道这条路我已经走了26年,懵懂到青涩,再到日趋而立之年,至今还依然徘徊不...
    璟乾阅读 360评论 1 4
  • 第五期新创客孵化营结业典礼 夏日炎炎,激情不减。 不管冬天还是夏天,“我”依然待学习如初恋。 “我”加入系统,“我...
    搏鹰姑娘有内涵阅读 374评论 0 1