Reproduction steps:
1. Open the attached “IN-107528.zip” project
2. Open the “PerformanceTestScene” Scene
3. From the Hierarchy, select the “Performance Test Script” GameObject
4. In the Inspector, find the “Prefab” property in the “Game Manager” Component
5. Assign “Prefab - Particle System (SLOW - hidden mesh)” prefab to “Prefab” property
6. Open the Profiler Window (Window > Analysis > Profiler)
7. Enter Play mode
8. Select any of the Frames in the CPU Usage
9. Switch to Hierarchy view in the Profiler
10. Locate both the Instantiate.Awake and GameObject.Activate entries in the Hierarchy
11. Observe their ”Time ms” values
Expected result: ”Time ms” values for GameObject.Activate is ~0.01ms and for Instantiate.Awake is ~0.04ms
Actual result: ”Time ms” values for GameObject.Activate is ~1.5ms and for Instantiate.Awake is ~1.4ms
Reproducible with: 2022.3.64f1, 6000.0.54f1, 6000.1.13f1, 6000.2.0b12, 6000.3.0a3
Reproducible on: Windows 10 (user reported), Windows 11
Not reproducible on: No other environment tested
Note:
- The expected result comes from comparison, where in the 5th step, “Prefab - Particle System (FAST - no mesh)” prefab is assigned instead. The settings are visually the same between inside one prefab and between the slow and the fast prefabs. The only difference is that on the “slow” prefab, old Renderer Mesh settings are still processed. To demonstrate how to fix it, open the “Prefab - Particle System (SLOW - hidden mesh)” prefab -> select all Particle GameObjects → In the Inspector go to the Rendered tab → Set the “Render Mode” to “Mesh” → In the “Meshes” property click on the circle and select None → Set the “Render Mode” back to “Billboard”. Now the “slow” prefab have the same performance as the “fast” one