Compare commits
4 Commits
ee1171d3e3
...
task/perfo
| Author | SHA1 | Date | |
|---|---|---|---|
| b1a2d959c7 | |||
| cccf1f7577 | |||
| f37658a481 | |||
| 07fa883537 |
548
.tasks/2025-12-01_1_performance_optimization_aggressive.md
Normal file
548
.tasks/2025-12-01_1_performance_optimization_aggressive.md
Normal file
@@ -0,0 +1,548 @@
|
||||
# 背景
|
||||
文件名:2025-12-01_1_performance_optimization_aggressive.md
|
||||
创建于:2025-12-01
|
||||
创建者:User
|
||||
主分支:main
|
||||
任务分支:task/performance_optimization_aggressive_2025-12-01_1
|
||||
Yolo模式:Off
|
||||
|
||||
# 任务描述
|
||||
对Unity音游编辑器项目进行激进的、彻底的性能优化,使用最先进的技术栈。项目限定在Windows 10+平台运行。
|
||||
|
||||
## 核心问题
|
||||
基于Tracy Profiler分析结果:
|
||||
1. **SplineNode.ScriptUpdate**: 5.66ms (19.37%), 3,240次调用 - 函数调用开销过大
|
||||
2. **递归Update模式**: 深度树形遍历导致缓存不友好
|
||||
3. **剪枝不彻底**: 大量对象在非活跃时间范围内仍在Update
|
||||
4. **Timeline UI更新**: 存在严重性能开销(已知问题)
|
||||
|
||||
## 性能目标
|
||||
- 将SplineNode.ScriptUpdate从5.66ms优化到<0.5ms(**10倍以上提升**)
|
||||
- 帧率从77fps提升到120fps+
|
||||
- 消除不必要的Update调用(减少70%+调用次数)
|
||||
|
||||
# 项目概览
|
||||
- **项目类型**: Unity音游编辑器
|
||||
- **核心框架**: Convention框架 + RScript脚本系统(基于FLEE)
|
||||
- **主要系统**:
|
||||
- ScriptableObject树形更新系统
|
||||
- Updatement<T>插值系统
|
||||
- IInteraction多级判定系统
|
||||
- SplineCore样条线渲染
|
||||
- TimelineScriptObject时间轴对象
|
||||
|
||||
## 技术栈
|
||||
- Unity 6.2 (6000.2.51)
|
||||
- C# (支持最新特性)
|
||||
- Tracy Profiler 0.11.1
|
||||
- Windows 10+ 专用
|
||||
|
||||
⚠️ 警告:永远不要修改此部分 ⚠️
|
||||
# RIPER-5核心规则摘要
|
||||
- 必须在响应开头声明当前模式:[MODE: MODE_NAME]
|
||||
- RESEARCH模式:只读取和理解,禁止建议和实施
|
||||
- INNOVATE模式:讨论多种方案,禁止具体实施
|
||||
- PLAN模式:创建详尽技术规范,必须转换为编号清单
|
||||
- EXECUTE模式:只实施已批准计划,禁止偏离
|
||||
- REVIEW模式:验证实施与计划的完全一致性
|
||||
|
||||
关键原则:
|
||||
- 未经明确许可不得在模式间转换
|
||||
- EXECUTE模式必须100%忠实遵循计划
|
||||
- 标记任何偏差,无论多小
|
||||
- 使用中文响应(除模式声明和代码)
|
||||
⚠️ 警告:永远不要修改此部分 ⚠️
|
||||
|
||||
# 分析
|
||||
|
||||
## 当前架构分析
|
||||
|
||||
### 1. Update调用链(存在问题)
|
||||
```
|
||||
GameController.Update()
|
||||
└─ RootObject.ScriptUpdate()
|
||||
└─ foreach (child in UpdateChilds)
|
||||
└─ child.ScriptUpdate() // 递归,3,240次
|
||||
└─ child.UpdateTicks() // 虚函数调用
|
||||
└─ 具体逻辑
|
||||
```
|
||||
|
||||
**性能问题**:
|
||||
- 递归调用开销累积
|
||||
- 虚函数调用开销
|
||||
- 缓存不友好(对象内存分散)
|
||||
- 无法并行化
|
||||
- 大量对象在非活跃时间范围内仍被调用
|
||||
|
||||
### 2. 现有优化机制(不足)
|
||||
代码中存在一些优化:
|
||||
- `UpdatePerFrame`: 降低Update频率
|
||||
- `IsEnableUpdate`: 静态剪枝(只能剪掉永远不更新的对象)
|
||||
- Update树剪枝:简化单子节点调用链
|
||||
|
||||
**不足之处**:
|
||||
- 无法剪枝"暂时不活跃"的对象
|
||||
- 无法利用多核CPU
|
||||
- 内存布局对缓存不友好
|
||||
|
||||
### 3. 技术约束
|
||||
- Unity主线程限制:Transform等API必须在主线程调用
|
||||
- MonoBehaviour限制:继承自MonoBehaviour的对象管理复杂
|
||||
|
||||
## 可用的先进技术
|
||||
|
||||
### Windows 10+ 专属优势
|
||||
1. **SIMD指令集**: AVX2, AVX-512(如果CPU支持)
|
||||
2. **现代CPU特性**: 更多核心,更好的缓存
|
||||
3. **.NET 最新特性**: Span<T>, Memory<T>, stackalloc
|
||||
4. **Unity DOTS**: ECS + Job System + Burst Compiler
|
||||
|
||||
### Unity DOTS技术栈
|
||||
1. **ECS (Entity Component System)**
|
||||
- 数据驱动架构
|
||||
- 缓存友好的内存布局
|
||||
- 易于并行化
|
||||
|
||||
2. **C# Job System**
|
||||
- 托管的多线程系统
|
||||
- 自动线程池管理
|
||||
- 安全检查避免竞态条件
|
||||
|
||||
3. **Burst Compiler**
|
||||
- 将C#编译为高度优化的机器码
|
||||
- SIMD自动向量化
|
||||
- 接近C/C++的性能
|
||||
|
||||
4. **Collections Package**
|
||||
- NativeArray, NativeList等非托管集合
|
||||
- 可在Job中安全使用
|
||||
- 避免GC压力
|
||||
|
||||
### 性能提升潜力
|
||||
|
||||
| 技术 | 预期提升 | 适用场景 |
|
||||
|------|---------|---------|
|
||||
| 时间范围剪枝 | 3-5倍 | 所有TimelineObject |
|
||||
| 扁平化调度 | 2-3倍 | Update调用链 |
|
||||
| Burst编译 | 5-10倍 | 数学密集计算 |
|
||||
| Job并行 | 2-4倍 | 批量数据处理 |
|
||||
| 缓存优化 | 2-3倍 | 数据访问模式 |
|
||||
| **综合** | **30-100倍** | 整体系统 |
|
||||
|
||||
# 提议的解决方案
|
||||
|
||||
## 方案概览
|
||||
|
||||
采用**混合架构**:保留MonoBehaviour作为外壳,内部使用ECS数据处理。
|
||||
|
||||
### 架构设计
|
||||
|
||||
```
|
||||
传统层(MonoBehaviour)
|
||||
↓ 数据同步
|
||||
ECS数据层(Burst Job处理)
|
||||
↓ 结果同步
|
||||
传统层(应用到Transform)
|
||||
```
|
||||
|
||||
## 核心方案要素
|
||||
|
||||
### 1. 时间分片调度系统
|
||||
**目标**: 只更新活跃时间范围内的对象
|
||||
|
||||
**实现**:
|
||||
- 使用SortedSet维护时间排序
|
||||
- 激活/停用事件驱动
|
||||
- 扁平化对象列表(无递归)
|
||||
|
||||
**预期**: 减少70%无效Update调用
|
||||
|
||||
### 2. ECS化核心系统
|
||||
|
||||
#### 2.1 Updatement系统(最适合ECS)
|
||||
- 纯数据:Entry列表、插值参数
|
||||
- 纯计算:Lerp、曲线求值
|
||||
- 可完全Burst编译和并行化
|
||||
|
||||
#### 2.2 Interaction判定系统
|
||||
- 输入处理可并行化
|
||||
- 判定计算可Burst优化
|
||||
- 结果批量应用
|
||||
|
||||
#### 2.3 SplineNode计算
|
||||
- 样条线计算适合SIMD
|
||||
- 批量计算所有节点位置
|
||||
- Burst编译获得巨大提升
|
||||
|
||||
### 3. Burst编译的Job
|
||||
|
||||
```csharp
|
||||
[BurstCompile]
|
||||
public struct UpdatementCalculationJob : IJobParallelFor
|
||||
{
|
||||
[ReadOnly] public float CurrentTime;
|
||||
[ReadOnly] public NativeArray<UpdatementEntry> Entries;
|
||||
[ReadOnly] public NativeArray<int> ContentIndices;
|
||||
|
||||
[WriteOnly] public NativeArray<float3> Results;
|
||||
|
||||
public void Execute(int index)
|
||||
{
|
||||
// 纯数学计算,Burst自动SIMD优化
|
||||
int content = ContentIndices[index];
|
||||
float percent = CalculatePercent(CurrentTime, Entries, content);
|
||||
Results[index] = math.lerp(
|
||||
Entries[content].Position,
|
||||
Entries[content + 1].Position,
|
||||
EvaluateCurve(percent, Entries[content].CurveType)
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 4. 内存布局优化
|
||||
|
||||
**SoA (Structure of Arrays) 代替 AoS (Array of Structures)**:
|
||||
|
||||
```csharp
|
||||
// 坏:AoS(缓存不友好)
|
||||
struct UpdatementData {
|
||||
float timePoint;
|
||||
Vector3 position;
|
||||
EaseCurveType curve;
|
||||
}
|
||||
UpdatementData[] data; // 数据交错
|
||||
|
||||
// 好:SoA(缓存友好)
|
||||
struct UpdatementDataSoA {
|
||||
NativeArray<float> timePoints; // 连续
|
||||
NativeArray<float3> positions; // 连续
|
||||
NativeArray<byte> curveTypes; // 连续
|
||||
}
|
||||
```
|
||||
|
||||
### 5. 对象池系统
|
||||
- 避免GC压力
|
||||
- 重用NativeArray
|
||||
- 预分配Job句柄
|
||||
|
||||
## 实施分层
|
||||
|
||||
### Phase 1: 基础设施(1周)
|
||||
1. 时间分片调度器
|
||||
2. UpdateScheduler基类
|
||||
3. 基础性能测试框架
|
||||
|
||||
### Phase 2: ECS核心(2周)
|
||||
1. Updatement系统ECS化
|
||||
2. Burst Job实现
|
||||
3. 数据同步机制
|
||||
|
||||
### Phase 3: 扩展优化(2周)
|
||||
1. SplineNode优化
|
||||
2. Interaction判定优化
|
||||
3. 对象池和内存管理
|
||||
|
||||
### Phase 4: 深度优化(1周)
|
||||
1. SIMD手动优化关键路径
|
||||
2. 内存布局调优
|
||||
3. 性能剖析和微调
|
||||
|
||||
## 技术细节
|
||||
|
||||
### Job依赖管理
|
||||
```csharp
|
||||
// 计算Job
|
||||
JobHandle calcHandle = calculationJob.Schedule(count, 64);
|
||||
|
||||
// 应用Job(依赖计算Job)
|
||||
JobHandle applyHandle = applyJob.Schedule(calcHandle);
|
||||
|
||||
// 等待完成
|
||||
applyHandle.Complete();
|
||||
```
|
||||
|
||||
### 安全检查
|
||||
Unity Job System提供编译时和运行时安全检查:
|
||||
- 检测数据竞争
|
||||
- 验证NativeArray生命周期
|
||||
- 防止悬空指针
|
||||
|
||||
### Profiler集成
|
||||
保持Tracy Profiler集成:
|
||||
```csharp
|
||||
using (Profiler.BeginZone("BurstJob.Schedule"))
|
||||
{
|
||||
handle = job.Schedule(count, 64);
|
||||
}
|
||||
```
|
||||
|
||||
## 风险与挑战
|
||||
|
||||
### 技术风险
|
||||
1. **学习曲线**: ECS和Burst需要学习
|
||||
2. **调试难度**: Burst代码调试较困难
|
||||
3. **兼容性**: 现有脚本系统集成
|
||||
|
||||
### 缓解措施
|
||||
1. 渐进式迁移,保持向后兼容
|
||||
2. 完善的性能测试
|
||||
3. 详细的文档和注释
|
||||
|
||||
### 回滚计划
|
||||
每个Phase完成后打tag,必要时可回滚
|
||||
|
||||
# 当前执行步骤:
|
||||
"阶段4.8 - 阶段4整体测试"
|
||||
|
||||
# 任务进度
|
||||
|
||||
## 阶段1:基础设施搭建
|
||||
|
||||
### 1.1 创建目录结构
|
||||
[2025-12-01 17:16:16]
|
||||
- 已修改:创建目录 Assets/Scripts/Framework/UpdateScheduler/
|
||||
- 更改:新建UpdateScheduler模块目录
|
||||
- 原因:为扁平化调度器准备代码组织结构
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 1.2 创建IUpdateable接口
|
||||
[2025-12-01 17:17:30]
|
||||
- 已修改:创建文件 IUpdateable.cs (48行)
|
||||
- 更改:定义IUpdateable接口(3个方法)和UpdateMode枚举(3个值)
|
||||
- 原因:为ScriptableObject提供统一的Update接口,支持扁平化调度
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 1.3 创建UpdateScheduler核心类
|
||||
[2025-12-01 17:18:45]
|
||||
- 已修改:创建文件 UpdateScheduler.cs (201行)
|
||||
- 更改:实现完整的扁平化调度器(Register、DoUpdate、时间分片、Reset/Clear等)
|
||||
- 原因:提供时间分片和扁平化Update管理的核心实现
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 1.4 RootObject添加Scheduler字段
|
||||
[2025-12-01 17:20:15]
|
||||
- 已修改:RootObject.cs (添加1行,Line 19)
|
||||
- 更改:添加Scheduler字段并初始化
|
||||
- 原因:为RootObject提供调度器实例
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 1.5 RootObject添加清理逻辑
|
||||
[2025-12-01 17:21:30]
|
||||
- 已修改:RootObject.cs UnloadScript方法 (添加2行,Line 38-39)
|
||||
- 更改:在卸载时调用Scheduler.Clear()
|
||||
- 原因:防止内存泄漏,正确释放注册对象
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 1.6 阶段1整体测试
|
||||
[2025-12-01 17:22:45]
|
||||
- 已修改:阶段1所有代码完成,等待测试
|
||||
- 更改:基础设施搭建完成(3个新文件,RootObject修改2处)
|
||||
- 原因:验证阶段1无破坏性影响
|
||||
- 测试项目:
|
||||
1. 编译项目 - ✅ 已通过(无linter错误)
|
||||
2. 运行编辑器 - ✅ 用户确认成功
|
||||
3. 打开项目 - ✅ 用户确认成功
|
||||
4. 检查RootObject.Scheduler字段 - ✅ 用户确认成功
|
||||
5. 关闭项目 - ✅ 用户确认成功
|
||||
6. 检查控制台无错误 - ✅ 用户确认成功
|
||||
- 阻碍因素:无
|
||||
- 状态:✅ 成功
|
||||
- Commit: 用户已提交
|
||||
|
||||
## 阶段2:接口适配
|
||||
|
||||
### 2.1 ScriptableObject添加IUpdateable接口声明
|
||||
[2025-12-01 17:30:00]
|
||||
- 已修改:ScriptableObject.cs 类声明 (Line 582,添加IUpdateable接口)
|
||||
- 更改:ScriptableObject实现IUpdateable接口
|
||||
- 原因:使所有ScriptableObject可以被调度器管理
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 2.2 添加Update模式字段
|
||||
[2025-12-01 17:32:15]
|
||||
- 已修改:ScriptableObject.cs (添加3个字段,Line 111-116)
|
||||
- 更改:添加_updateMode、_activeStartTime、_activeEndTime字段
|
||||
- 原因:存储对象的Update模式和时间范围
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 2.3 添加虚方法供子类重写
|
||||
[2025-12-01 17:34:30]
|
||||
- 已修改:ScriptableObject.cs (添加2个虚方法,Line 175-183)
|
||||
- 更改:添加GetUpdateMode和GetActiveTimeRange虚方法
|
||||
- 原因:允许子类自定义Update模式和时间范围
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 2.4 实现IUpdateable接口方法
|
||||
[2025-12-01 17:36:45]
|
||||
- 已修改:ScriptableObject.cs (添加新的partial class,约35行,Line 916-950)
|
||||
- 更改:实现IUpdateable的3个接口方法(ExecuteUpdate、GetUpdateName、IsUpdateReady)
|
||||
- 原因:提供扁平化Update入口,复用原有UpdateTicks逻辑
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 2.4.1 重命名方法为FlatOptimizationUpdate(更具描述性)
|
||||
[2025-12-01 17:40:00]
|
||||
- 已修改:IUpdateable.cs、UpdateScheduler.cs、ScriptableObject.cs
|
||||
- 更改:将方法重命名为FlatOptimizationUpdate,明确表达"扁平化优化Update"的含义
|
||||
- 原因:提高代码可读性,方法名清晰表达优化目的
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 2.5 阶段2整体测试
|
||||
[2025-12-01 17:38:00]
|
||||
- 已修改:阶段2所有代码完成,等待测试
|
||||
- 更改:ScriptableObject完整实现IUpdateable接口(添加3个字段、2个虚方法、3个接口方法)
|
||||
- 原因:验证接口实现无破坏性影响
|
||||
- 测试项目:
|
||||
1. 编译项目 - ✅ 已通过(无linter错误)
|
||||
2. 运行编辑器 - ✅ 用户确认成功
|
||||
3. 打开项目 - ✅ 用户确认成功
|
||||
4. 检查Inspector中新增字段是否可见 - ✅ 用户确认成功
|
||||
5. 验证游戏功能不受影响 - ✅ 用户确认成功
|
||||
- 阻碍因素:无
|
||||
- 状态:✅ 成功
|
||||
- Commit: 用户已提交
|
||||
|
||||
## 阶段3:可选注册机制
|
||||
|
||||
### 3.1 添加注册控制字段
|
||||
[2025-12-01 17:45:00]
|
||||
- 已修改:ScriptableObject.cs (添加1个字段,Line 120)
|
||||
- 更改:添加_useUpdateScheduler控制字段,默认false
|
||||
- 原因:提供可选的调度器注册开关,默认不影响现有逻辑
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 3.2 添加脚本方法启用调度器
|
||||
[2025-12-01 17:47:15]
|
||||
- 已修改:ScriptableObject.cs (添加EnableUpdateScheduler方法,Line 178-183)
|
||||
- 更改:添加RScript可调用的启用方法
|
||||
- 原因:允许脚本中手动启用调度器
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 3.3 修改ApplyScript添加注册逻辑
|
||||
[2025-12-01 17:49:30]
|
||||
- 已修改:ScriptableObject.cs ApplyScript方法 (添加5行,Line 678-682)
|
||||
- 更改:在ApplyScript中添加可选注册调用
|
||||
- 原因:对象应用时自动注册到调度器(如果启用)
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 3.4 实现RegisterToScheduler方法
|
||||
[2025-12-01 17:51:45]
|
||||
- 已修改:ScriptableObject.cs (添加RegisterToScheduler私有方法,约25行,Line 684-708)
|
||||
- 更改:实现调度器注册逻辑,包含错误处理和日志
|
||||
- 原因:封装注册流程,自动获取Update模式和时间范围
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 3.5 阶段3整体测试
|
||||
[2025-12-01 17:53:00]
|
||||
- 已修改:阶段3所有代码完成,等待测试
|
||||
- 更改:实现可选注册机制(添加1个字段、1个公开方法、1个私有方法、修改ApplyScript)
|
||||
- 原因:验证注册机制正确工作
|
||||
- 测试项目:
|
||||
1. 编译项目 - ✅ 已通过(无linter错误)
|
||||
2. 运行编辑器 - 待测试
|
||||
3. 在测试脚本中调用EnableUpdateScheduler() - 待测试
|
||||
4. 检查控制台日志,确认对象被注册 - 待测试
|
||||
5. 验证默认行为不变(_useUpdateScheduler=false) - 待测试
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认 → 等待用户确认:成功/不成功?
|
||||
|
||||
## 阶段4:双轨运行和实际调用
|
||||
|
||||
### 4.1 GameController添加控制字段
|
||||
[2025-12-01 18:00:00]
|
||||
- 已修改:GameController.cs (添加1个字段,Line 22)
|
||||
- 更改:添加_enableSchedulerUpdate控制字段,默认false
|
||||
- 原因:控制GameController使用新旧Update方式
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.2 修改GameController主Update循环
|
||||
[2025-12-01 18:02:15]
|
||||
- 已修改:GameController.cs Update方法主循环 (修改8行,Line 318-329)
|
||||
- 更改:添加新旧Update方式分支,支持调用FlatOptimizationUpdate或ScriptUpdate
|
||||
- 原因:允许运行时切换Update方式进行对比
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.3 修改GameController滚动时间轴Update调用
|
||||
[2025-12-01 18:04:30]
|
||||
- 已修改:GameController.cs Update方法滚动逻辑 (修改4行,Line 373-376)
|
||||
- 更改:滚动时间轴也支持新旧方式切换
|
||||
- 原因:确保所有Update调用点一致
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.4 修改GameController滚动Reset逻辑
|
||||
[2025-12-01 18:05:45]
|
||||
- 已修改:GameController.cs Update方法滚动Reset (修改10行,Line 378-388)
|
||||
- 更改:滚动重置也支持新旧方式切换
|
||||
- 原因:确保Reset调用点一致
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.5 修改ForceScriptUpdate方法
|
||||
[2025-12-01 18:07:00]
|
||||
- 已修改:GameController.cs ForceScriptUpdate方法 (修改5行,Line 294-299)
|
||||
- 更改:强制更新也支持新旧方式切换
|
||||
- 原因:确保所有Update入口一致
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.6 修改Stop/Pause/Play方法
|
||||
[2025-12-01 18:08:15]
|
||||
- 已修改:GameController.cs Stop/Pause/Play方法 (修改15行,Line 263-292)
|
||||
- 更改:播放控制方法也支持新旧方式切换
|
||||
- 原因:确保播放控制的Update调用一致
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.7 RootObject.UpdateTicks调用调度器(关键)
|
||||
[2025-12-01 18:10:30]
|
||||
- 已修改:RootObject.cs UpdateTicks方法 (添加10行,Line 111-120)
|
||||
- 更改:RootObject调用Scheduler.DoUpdate()进行扁平化Update,移除base.UpdateTicks()调用
|
||||
- 原因:这是关键步骤,让Scheduler实际被调用,建立完整调用链
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.7.1 修复崩溃问题 - 条件调用Scheduler
|
||||
[2025-12-01 18:15:00]
|
||||
- 已修改:RootObject.cs UpdateTicks方法 (修改逻辑,Line 112-124)
|
||||
- 更改:添加条件判断,仅在Scheduler有注册对象时调用Scheduler,否则调用base.UpdateTicks()保持旧行为
|
||||
- 原因:修复旧方式下的崩溃问题,避免双重更新和冲突
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认
|
||||
|
||||
### 4.8 阶段4整体测试
|
||||
[2025-12-01 18:12:00]
|
||||
- 已修改:阶段4所有代码完成,等待测试
|
||||
- 更改:实现双轨Update,支持新旧方式切换(GameController 6处修改,RootObject 1处关键修改)
|
||||
- 原因:验证新方式功能正确且性能提升,Scheduler实际被调用
|
||||
- 测试项目:
|
||||
1. 编译项目 - ✅ 已通过(无linter错误)
|
||||
2. 旧方式测试(_enableSchedulerUpdate=false) - 待测试
|
||||
3. 新方式测试(_enableSchedulerUpdate=true,部分对象启用调度器) - 待测试
|
||||
4. 功能验证(播放/暂停/停止/滚动时间轴) - 待测试
|
||||
5. 性能对比(Tracy Profiler数据) - 待测试
|
||||
- 阻碍因素:无
|
||||
- 状态:未确认 → 等待用户确认:成功/不成功?
|
||||
- 调用链验证:
|
||||
* 旧方式:GameController → MainObject.ScriptUpdate() → 递归
|
||||
* 新方式:GameController → MainObject.FlatOptimizationUpdate() → RootObject.UpdateTicks() → Scheduler.DoUpdate() → 扁平化
|
||||
|
||||
# 最终审查
|
||||
[待完成]
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 60452087adf370e4ab7311d4d0f89610
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: b8ba33b60f1077a4e8e86ede7a7dfbc0
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 0de95d1d11f8f0644b750f69a3a45b29
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: d1456bed315703b42a39352ec0be892d
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 4e99eebef8e713d42af2b6d59ad53697
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: acbf735db00b0244cbf9f89d2799949f
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 7431a2e38c768004eb82284983fe33b1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: a02ab2e7dc24cf2498f0e48450b71ccb
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 7f8b11e560d80174f981971da302d0d7
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: f07ef9f322d4cb54b88fa4d251a6e524
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: e96497b7a17d73c44b57bcac94501af1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 46e0917220767f84a9e72de70f66355f
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 9a96eb3d45d99774c9d8c0263fc0ff97
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: aoe_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 74a45e939f019a44e9fa15bd3f76243b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 9bbaa2224edd0314a86954ca18687e17
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 2a0e2540a3950164fb777088729d2847
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 9295d57e97151314a80943592750cbda
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: c36e8f631d2d7dc429df3c6186c53234
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: d20cfd9d000501e48b06e384b30ba5d7
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 193ea807ebd6fb4458aba82be930314f
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: character_auras
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 702b54ac50fe60749bcfd47108b3afff
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: f2afde4d4b9ac7b49a74b4a959b2c9a7
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 758db589664bcd8428780fdfa993ca4c
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 7c4b7b1b80c86af499a6f0119f6afda1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: ee9a192a089728a4b91679fb2873dd6b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 1befd4fadeb3158419db2ffac2e6f5ff
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 96cf9617d49c21445865ef9099edc4d0
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 36299255fb8a3a145856c25cee966c03
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: hits_and_explosions
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 1e60b7d8b0a54cb4d88e75a920c56687
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: magic_circles
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: b2712e34cc581474cacea6818bf33baf
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: magic_circles
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: cbed276d748c7b849ae4c42cf13eda6f
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: magic_circles
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: ebfe9d06f02c9d34ab8847c353ab43fa
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: magic_circles
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 48efc1a8f12f53c45ab5b252643b33a4
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: portals
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 579802ea806917a42a0466820d3ce4ee
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: portals
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: f2b486a1c0f06a04e8c345235064a331
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: portals
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: a214dfbc5fffb494c9fef2596135253c
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: portals
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: a326a54672e839f428aac1120cdbc433
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: slash_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: da98ffcff758db04c84dc63a168319eb
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: slash_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 6a6c6ebd203b8174993f8defc05d62e3
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: slash_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: d2fff03d3e9ff43409ce5935e0f4519f
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: slash_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 1663473351a454d4cacd5facbca5a216
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: slash_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 4000c84c4e3785041a88cfbbb2deeb33
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: slash_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 4149adf3ba1727947976a5ccb03c5099
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 449a9456f2286484db54669223fa5d40
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: db9ff06b42a1d084097539cf6ecb8701
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: e0122c12e52f14b41a23e7221d86b68d
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 03aa7733806268145a45709c1eae9296
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: ebf0a3e1a8d620b4baa494a1a94ecc5e
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: ebec5d7603c6b194a88bc9f4f2d46651
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 00e3f4220eaa07c4eb12c7688b3f4bfe
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 935468f3b0fe54944bf3fdb3f044c0f5
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: smoke_effects
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: b599d44d6f20a57488525f8dc4d5a097
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: e3d21bab75e181247b4a560a9adb04c1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: c4a6c28902216164fa040d3867d14d0a
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 1116b2a722fdac94cbc008cecc0a04a9
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 0bef098b298803f4abdb3c97e94c973c
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 9f8ec7cb478786b4989f185b2a45c862
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: cc79df5a4a7f5294bbf852672c2e6a2b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 039624e2d30b5ef41acff45a5138a90a
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: d38a9332d48a7084d83bb617bde700fa
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 247f2277598c6394db3b710815616286
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: b6bd9a25e5fbdda409c0217315662f07
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: d03c0fc2693fb4a4ca049a21b1e01764
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: e99ae3d51d250274ebccd16e68d1a414
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 489fd9f0ad9d8d0419583d339f3b11b4
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 24a04a86a3866e14da15ac93a9205875
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 940be515bfff7a04baef210c7f82c176
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 2b23239dfa092034f8ebb57b100d23ed
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: 1846a80d65508614d881556c8eff197b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: sparks
|
||||
assetBundleName: particles
|
||||
assetBundleVariant: ab
|
||||
|
||||
@@ -3,5 +3,5 @@ guid: b7b9e51b97a0aea4682f92c45d082eca
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 776d22340159044448d007213148bb72
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 31ce43f63178a044ea04230cefdee8fc
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 345053a0791ad874e8ceee18f5432443
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 1dc303ae5311b6d40ae079359fe82875
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: cc87a81d51f45134590e285d86c72293
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: c9cb7ab8ab283c3458ef9132ece54fb3
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: cd50f9be2e297e44ebf725902c190ebf
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 446b29ca04989624694739e049786214
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 64e69d3822b37b74fab2eb672a992afc
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: 17998748ba01a284f879d0c9f85a489b
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -3,5 +3,5 @@ guid: cd97f044c0637fb48a97931a0a3daf97
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName: fx_fire
|
||||
assetBundleVariant: ab
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,41 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
|
||||
m_Name: MotionBlur
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Core.Runtime::UnityEngine.Rendering.VolumeProfile
|
||||
components:
|
||||
- {fileID: 6947014788298238594}
|
||||
--- !u!114 &6947014788298238594
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 3
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: ccf1aba9553839d41ae37dd52e9ebcce, type: 3}
|
||||
m_Name: MotionBlur
|
||||
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.MotionBlur
|
||||
active: 1
|
||||
mode:
|
||||
m_OverrideState: 0
|
||||
m_Value: 0
|
||||
quality:
|
||||
m_OverrideState: 0
|
||||
m_Value: 0
|
||||
intensity:
|
||||
m_OverrideState: 1
|
||||
m_Value: 0.308
|
||||
clamp:
|
||||
m_OverrideState: 0
|
||||
m_Value: 0.05
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b0f07468d55d78a4fa11a3e8664ab3c4
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user