MENU
2024.01.06 サイトデザインをリニューアル中です

【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

参考リンク

Unity Forum
Asset Bundles and Timeline iOS Hi, I am working on a project that uses asset-bundles for the scenes, these contain Timelines in them. In the editor they work fine and on android...

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次