はじめに
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 f:id:yui-frapper:20191209013800p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/y/yui-frapper/20191209/20191209013800.png)
MonoビルドだとDisableの項目があるので、Monoビルドでない限りは完全な無効化はできないみたいですね…
![f:id:yui-frapper:20191209014022p:plain f:id:yui-frapper:20191209014022p:plain](https://cdn-ak.f.st-hatena.com/images/fotolife/y/yui-frapper/20191209/20191209014022.png)
参考リンク
Unity Forum
![](data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==)
![](https://unity.com/themes/contrib/unity_base/images/og.jpg)
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...
コメント