satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

Firebase Unity SDK を .NET 4.6 で使おうとしたら Task でハマった

@see https://groups.google.com/d/msg/firebase-talk/2w1Lk62VIcg/1ysauzl9CwAJ

2018-06-13 追記 Unity 2018.1 以降に Firebase SDK 5.0.0 以降を入れることで特に苦労することなくちゃんと動作させることができるようになりました。IL2CPP とかその辺りで不具合があったみたい?

追記終わり

2017-10-27 追記

コード中で async/await 使わない場合は (ContinueWith でコールバック書いた場合は) 以下の対応をしなくても、普通に使えた。 合わせて Firebase SDK 4.2.1 にアップデートしているのでそちらの影響かも。。不確かでアレですが、メモとして残しておきます。

追記終わり

どうも System.Threading.Tasks.Task が古い .NET では提供されていないため、Firebase Unity SDK 側が同梱してくれていて、それ関連でうまくいってなかった。

最初に出てたのはこんなエラー。

The type 'Task' exists in both 'Unity.Tasks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' [Assembly-CSharp]

で、上記 URL の指示に従って Unity 上で作業

  • Assets/Parse/Unity.Tasks を削除
  • Assets/Parse/dotNet45/Unity.Tasks を選択してインスペクタから以下のように設定して有効化

f:id:satococoa:20171025160009p:plain

これで動いた。