diff --git a/package/Runtime/GaussianSplatRenderer.cs b/package/Runtime/GaussianSplatRenderer.cs index 9e080b97..5bfdf86b 100644 --- a/package/Runtime/GaussianSplatRenderer.cs +++ b/package/Runtime/GaussianSplatRenderer.cs @@ -474,14 +474,23 @@ public void EnsureSorterAndRegister() public void OnEnable() { - m_FrameCounter = 0; - if (!resourcesAreSetUp) - return; + var curHash = m_Asset ? m_Asset.dataHash : new Hash128(); - EnsureMaterials(); - EnsureSorterAndRegister(); + //OnEnable will run multiple times when entering play mode from the editor + if (m_PrevAsset != m_Asset || m_PrevHash != curHash) + { + m_FrameCounter = 0; + if (!resourcesAreSetUp) + return; + + m_PrevAsset = m_Asset; + m_PrevHash = curHash; - CreateResourcesForAsset(); + EnsureMaterials(); + EnsureSorterAndRegister(); + + CreateResourcesForAsset(); + } } void SetAssetDataOnCS(CommandBuffer cmb, KernelIndices kernel)