Search Issue Tracker
Won't Fix
Votes
11
Found in [Package]
1.15.1
Issue ID
ADDR-1507
Regression
No
[Addressables]Timeline's signals won't launch when lhe Timeline is loaded by Addressables on Android
Reproduction steps:
1. Download and open the user-attached project "AddressablesTimelineBug.zip"
2. Open the Addressables Groups window (Window -> Asset Management -> Addressables -> Groups)
3. Click on "Build -> New Build -> Default Build Script"
4. At the root of your Android phone, create a folder named "Addressables/Test".
5. Copy the built files from "<ProjectPath>/ServerData/Addressables" to "Addressables/Test"
6. Build and run the project on Android.
Expected result: The Capsule GameObject should keep appearing and disappearing
Actual result: The Capsule remains active all the time
Reproducible with: 2019.4.11f1 (1.1.5, 1.15.1), 2020.2.0b3 (1.15.1)
Reproduces on:
VLNQA00012, Samsung Galaxy S6 (SM-G920F), Android 7.0, CPU: Exynos 7 Octa 7420, GPU: Mali-T760
VLNQA00122, Samsung Galaxy S9 (SM-G960F), Android 9, CPU: Exynos 9 Series 9810, GPU: Mali-G72
VLNQA00125, Google Pixel 2 (Pixel 2), Android 8.1.0, CPU: Snapdragon 835 MSM8998, GPU: Adreno (TM) 540
Does not reproduce on: Windows 10
Notes:
Could not test on Unity 2018.4 due to project breaking.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Physics.Raycast fails when a Capsule Collider at a default position is used
- [Silicon] Crash on mono_get_hazardous_pointer when disconnecting Bluetooth Headhpones while in Play Mode
- Switching Project when importing complete project does not import all assets and project opens incomplete
- [Linux] Input.mouseScrollDelta is inconsistent when limiting framerate
- Undoing the branch rotation resets only wireframe and not mesh when undoing the action first time after launching the project
Resolution Note:
The user is using Addressables to load a Timeline Instance, which is a prefab that contains a Playable Director component. This component has a reference to the Timeline Asset.
The Timeline Asset contains Signal Emitters, which have references to the Signal Assets. There is another GameObject in the scene that has a Signal Receiver component, which also has references to the Signal Assets. The issue is that these Signal Asset references aren't considered equivalent.
See this blog post for more information about Timeline Signals: https://blogs.unity3d.com/2019/05/21/how-to-use-timeline-signals/.
One workaround is to manually set the Signal Asset references on the Signal Emitters. The Signal Asset references are stored on a GameObject in the scene.
In the example below, the references are stored on the GameObject containing the AddressablesInstantiator script component.
SignalTrack signalTrack = (SignalTrack)asset.GetRootTrack(3);
List<IMarker> markers = signalTrack.GetMarkers().ToList();
AddressablesInstantiator instantiator = FindObjectOfType<AddressablesInstantiator>();
for(int i = 0; i < markers.Count; i++)
{
SignalEmitter emitter = (SignalEmitter)markers[i];
emitter.asset = instantiator.signalAssets[i];
}
Another workaround is to put the Timeline Instance prefab in the same scene as the GameObject with the Signal Receiver component. At this point the timeline signals will function as expected when entering Play Mode or running a build.
To continue using Addressables to load the objects, create a new scene that acts as a bootstrap scene. Then use Addressables.LoadSceneAsync to load the scene containing the Timeline Instance and the GameObject with the Signal Receiver component.