ゆいブロ

自分の好きなことや知見をまとめていくブログです。

スポンサーリンク

【Unity】Unityを2019にアップグレードしたらTimelineが上手く再生されなかった時の対処法

はじめに

 UnityのTimelineを使って実装しているプロジェクトをUnity2019にアップグレードしたら、Activation Trackを設定しても、オブジェクトがアクティブにならないと言う問題が発生しました。

解決方法

下記の通り記載したlink.xmlファイルを作成し、Assetsフォルダ下に置く。

場所はAssetsフォルダ以下であればどこでも動くと思います。

<linker>
    <assembly fullname="UnityEngine.Timeline" preserve="all"/>
    <assembly fullname="Unity.Timeline" preserve="all"/>
    <assembly fullname="UnityEngine">
      <namespace fullname="UnityEngine.Playables" preserve="all"/>
    </assembly>
</linker>

 

その時の状況

  • Unity2018→Unity2019.2.12f1へ移行
  • TimelineをAssetBundle化していた
  • Il2cppビルドを有効化 上記の状態で実装していて問題が発生しました。

原因

原因は、UnityのStrip Engine Codeと言う機能でした。

Strip Engine Codeとは、ビルド時に必要のないEngine部分のコードをUnityが判別して削ってビルドしてくれる機能です。

AssetBundleを運用している場合だと、アプリ側にはビルドした元のファイルが入っていないので、使用していない機能のコードが削られてしまう仕様らしく、

その結果AssetBundle化していたTimelineの一部のコードが削られてしまい、上手く機能していなかったみたいです。

で、上記で記載したlink.xmlと言うのは、このStrip Engine Codeで削って欲しくないコードを指定することができるファイルです。

今回はTimeline関連のコンポーネントを記載したため、上手く動くようになりました。

Strip Engine Codeの余談

ちなみにこのStrip Engine Codeですが、Unity2019かつil2cppビルドだとManage Stripping Level(Stripする強さ?を選べるもの)がLowからしかないのです。 (Strip Engine Codeのチェックを外してもStripされているみたい)

f:id:yui-frapper:20191209013800p:plain
Il2cpp - Strip Engine Code

MonoビルドだとDisableの項目があるので、Monoビルドでない限りは完全な無効化はできないみたいですね...

f:id:yui-frapper:20191209014022p:plain
Mono - Strip Engine Code

参考リンク

https://forum.unity.com/threads/asset-bundles-and-timeline-ios.586018/

qiita.com