argus
New Member
Posts: 1
Posts: 1
|
Post by argus on Jan 24, 2021 0:57:06 GMT
Hi!
I'm a long time user, but first time reporter of a bug:
When I have ADDRESSABLES_ENABLED the function CheckAddressablesForDelayedRelease allocates a list every frame.
It would be better to move the list initialization into a variable outside the function and to just clear the list every frame instead.
Here I updated the code as an example of something that does no per-frame allocations:
#if ADDRESSABLES_ENABLED
static readonly List<string> _deadIds = new List<string>(64);
private static void CheckAddressablesForDelayedRelease() {
if (Instance.AddressablesToReleaseLater.Count == 0) {
return;
}
_deadIds.Clear();
for (var i = 0; i < Instance.AddressablesToReleaseLater.Count; i++) {
var addToRelease = Instance.AddressablesToReleaseLater[i];
if (Time.realtimeSinceStartup >= addToRelease.RealtimeToRelease) {
_deadIds.Add(addToRelease.AddressableId);
}
}
foreach (var deadId in _deadIds) {
AudioAddressableOptimizer.MaybeReleaseAddressable(deadId, true);
}
Instance.AddressablesToReleaseLater.RemoveAll(delegate (AddressableDelayedRelease adr) {
return _deadIds.Contains(adr.AddressableId);
});
}
#endif
|
|
|
Post by DarkTonic Dev on Jan 24, 2021 4:32:18 GMT
Hey thanks, good find!
I usually do it that way so I'm not sure why I missed it this time. It's fixed for the next update.
-B
|
|