UE5.3C++20新特性应用(一)

目录

1.nullptr空指针

2.基于范围的for循环语法

3.inline内联函数

4.override重写函数

5.final阻止子类重写虚函数

6.强枚举类型

7.typename优化


1.nullptr空指针

空指针不要用NULL了,都用nullptr

比如:

if (LevelSequence == nullptr)
{
    bSuccess = false;
    return nullptr;
}

2.基于范围的for循环语法

如下:

TArray<UMovieSceneFolder*> Folders;
LevelSequence->GetMovieScene()->GetRootFolders(Folders);
for (auto& Folder : Folders)
{
    if (Folder->GetFolderName() == FolderName)
    {
        bSuccess = true;
        return Folder;
    }
}

跟auto自动推导相结合会比较方便

3.inline内联函数

inline可以解决非常量静态成员变量初始化的问题

在UE的FString类中可以找到:FORCEINLINE这个宏(unrealString.h头文件中)

UE5.3 C++中设计个简单的蓝图节点来播放字符串类型的音效资源,你可以按照以下步骤操作: 1. **创建新节点**: - 首先,在蓝图工具中,右键选择"Add Node",然后搜索并添加个新的自定义节点(Custom Node)。命名为例如"PlayAudioFromAsset"。 2. **输入参数**: - 在节点上添加两个属性: a) 输入参数:个文本框(Text pin),用于接受用户输入的音效资产名称,这通常是字符串类型。 b) 播放触发:个布尔值(Bool pin)或其他触发类型,比如事件触发,表示当这个参数设置为真时开始播放音频。 3. **实现播放函数**: - 右键点击节点,选择"Add Function",编写`ExecuteUbergraph`函数,这是蓝图节点的核心部分。 ```cpp UFUNCTION(BlueprintCallable, Category = "MyCategory") void PlayAudioFromAsset(FString AudioAssetName, bool TriggerPlayback); ``` 4. **关联到声音组件**: - 在函数内部,找到或创建个USoundComponent实例,并尝试加载指定的音效资源。如果成功,调用播放方法,如`Play()`。 ```cpp void UPlayAudioFromAssetNode::PlayAudioFromAsset(FString AudioAssetName, bool TriggerPlayback) { USoundComponent* SoundComp = GetDefault<UWorld>()->GetFirstSoundComponent(); if (SoundComp) { FAudioObjectInitializer Initializer; if (FAssetRegistry::LoadAsset<USoundWave>(AudioAssetName, Initializer)) { USoundBase* SoundBase = Cast<USoundBase>(Initializer.Object); if (SoundBase) { SoundComp->Play(SoundBase, false, 0.f, 0.f); } else { UE_LOG(LogTemp, Error, TEXT("Failed to load audio asset: %s"), *AudioAssetName); } } else { UE_LOG(LogTemp, Warning, TEXT("Failed to find sound asset: %s"), *AudioAssetName); } } } ``` 5. **错误处理**: - 上述代码片段包含了加载资产失败的情况,你需要在合适的位置处理可能出现的错误,比如记录日志或者向用户显示错误信息。 6. **测试和调试**: - 在蓝图编辑器中创建个测试场景,连接蓝图节点并在输入框中填写音效名称,验证能否正常播放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值