2026-05-03 20:37:58 +08:00
|
|
|
|
---
|
|
|
|
|
|
title: 相机系统扩展
|
|
|
|
|
|
date: 2026-05-03 00:00:00
|
|
|
|
|
|
excerpt: 相机动画水平翻转和自动释放机制
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- ARC
|
|
|
|
|
|
- Gameplay
|
|
|
|
|
|
- Camera
|
|
|
|
|
|
rating: ⭐
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# 相机系统扩展
|
|
|
|
|
|
|
|
|
|
|
|
返回 [[Gameplay]]
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
为格斗游戏的相机需求扩展了 `CameraAnimInst`。
|
|
|
|
|
|
|
|
|
|
|
|
## 水平翻转(bPlayCameraAnimFlipH)
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
bool bPlayCameraAnimFlipH;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
在格斗游戏中,当玩家 1 和玩家 2 交换左右位置时(交叉),相机动画需要水平翻转以保持视觉一致性。此标记控制相机震动、特写等动画的水平翻转。
|
|
|
|
|
|
|
|
|
|
|
|
## 自动释放(bAutoReleaseWhenFinished)
|
|
|
|
|
|
|
|
|
|
|
|
```cpp
|
|
|
|
|
|
bool bAutoReleaseWhenFinished;
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
相机动画播放完毕后自动释放实例,避免格斗游戏频繁的相机震动(受击、必杀技等)导致的实例泄漏。
|
|
|
|
|
|
|
2026-05-03 21:38:46 +08:00
|
|
|
|
## 完整代码解析
|
2026-05-03 20:37:58 +08:00
|
|
|
|
|
2026-05-03 21:38:46 +08:00
|
|
|
|
```cpp
|
|
|
|
|
|
// CameraAnimInst.h — 相机动画实例扩展
|
|
|
|
|
|
class UCameraAnimInst
|
|
|
|
|
|
{
|
|
|
|
|
|
// ASW 新增:播放完毕后自动释放实例
|
|
|
|
|
|
// 格斗游戏频繁触发相机震动(受击、必杀技),
|
|
|
|
|
|
// 没有自动释放会导致实例泄漏
|
|
|
|
|
|
UPROPERTY()
|
|
|
|
|
|
bool bAutoReleaseWhenFinished;
|
|
|
|
|
|
|
|
|
|
|
|
// ASW 新增:水平翻转相机动画
|
|
|
|
|
|
// 格斗游戏中玩家交换左右位置(交叉)时,
|
|
|
|
|
|
// 相机震动需要水平翻转以保持视觉一致
|
|
|
|
|
|
UPROPERTY()
|
|
|
|
|
|
bool bPlayCameraAnimFlipH;
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 代码修改情况
|
|
|
|
|
|
|
|
|
|
|
|
| 文件路径 | 修改类型 | 修改内容 |
|
|
|
|
|
|
|---------|---------|---------|
|
|
|
|
|
|
| `Source/Runtime/Engine/Classes/Camera/CameraAnimInst.h` | 新增 | `bAutoReleaseWhenFinished` 自动释放标记 |
|
|
|
|
|
|
| `Source/Runtime/Engine/Classes/Camera/CameraAnimInst.h` | 新增 | `bPlayCameraAnimFlipH` 水平翻转标记 |
|