首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛物线检查崩溃UE5

抛物线检查崩溃UE5
EN

Stack Overflow用户
提问于 2022-08-25 12:47:21
回答 1查看 76关注 0票数 -1

我正试图通过将每个命中对象的名字打印到日志中来检查多行跟踪是否击中日志,但是由于(我假设)内存错误,引擎仍在崩溃。我只尝试打印第一个对象,它可以工作,但是由于这是一个多行跟踪,所以我想检查每个被击中的对象

这是我的代码:

代码语言:javascript
复制
TArray<FHitResult> hits = {};

ECollisionChannel channel(ECC_GameTraceChannel1);
FCollisionQueryParams TraceParams(FName(TEXT("")), false, GetOwner());

GetWorld()->LineTraceMultiByChannel(
    OUT hits,
    camWorldLocation,
    end,
    channel,
    TraceParams
);

DrawDebugLine(GetWorld(), camWorldLocation, end, FColor::Green, false, 2.0f);

if (!hits.IsEmpty())
{
    for (int i = 0; i < sizeof(hits); i++)
    {
        if (&hits[i] != nullptr) {
            if (hits[i].GetActor() != nullptr)
            {
                UE_LOG(LogTemp, Error, TEXT("Line trace has hit: %s"), *(hits[i].GetActor()->GetName()));
            }
        }
        else 
        {
            break;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-25 13:05:59

sizeof(hits)给出了C++对象的大小(以字节为单位),而不是容器中的项数。

你需要用

代码语言:javascript
复制
for (int i = 0; i < hits.Num(); i++)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73487780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档