mirror of
https://github.com/ppy/osu.git
synced 2025-02-16 13:42:56 +08:00
If the skin is changed before gameplay has started (at the loading screen) it is possible for a sequence of events to occur which results in the animation not being played: - `SkinReloadableDrawable` runs its BDL load (and calls `OnSkinChanged` once) - User changes skin, triggering `DrawableJudgement`'s skin change handling (binding directly on the `SkinSource` locally) - This will call `PrepareDrawables` and reinitialise the `SkinnableDrawable` child hierarchy, then immediately apply the animations to it. - The new `SkinnableDrawable` will then get the `SkinChanged` event and schedule a handler for it, which will run on its first Update call. - Any added animations will be lost as a result. Fixed by binding directly to the `SkinnableDrawable`'s `OnSkinChanged`. This has the added bonus of not needing to reinitialise the child hierarchy on skin change (which felt a bit weird in the first place). |
||
---|---|---|
.. | ||
Configuration | ||
Difficulty | ||
Edit | ||
Judgements | ||
Mods | ||
Objects | ||
Replays | ||
Scoring | ||
Timing | ||
UI | ||
ILegacyRuleset.cs | ||
Ruleset.cs | ||
RulesetConfigCache.cs | ||
RulesetInfo.cs | ||
RulesetSelector.cs | ||
RulesetStore.cs |