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

Package: Build Pipeline - Addressables

-

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.

  1. 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.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.