NCMBエラー「UriFormatException: Absolute URI is too short」の解決方法

UnityでNCMBを使っていた時に起こったエラー。

UriFormatException: Absolute URI is too short
System.Uri.Parse (UriKind kind, System.String uriString)
System.Uri.ParseUri (UriKind kind)
System.Uri..ctor (System.String uriString, Boolean dontEscape)
System.Uri..ctor (System.String uriString)
NCMB.Internal.NCMBConnection..ctor (System.String url, ConnectType method, System.String content, System.String sessionToken, NCMB.NCMBFile file, System.String domain) (at Assets/NCMB/Script/NCMBConnection.cs:112)
NCMB.Internal.NCMBConnection..ctor (System.String url, ConnectType method, System.String content, System.String sessionToken) (at Assets/NCMB/Script/NCMBConnection.cs:93)
NCMB.NCMBQuery`1[NCMB.NCMBObject].CountAsync (NCMB.NCMBCountCallback callback) (at Assets/NCMB/Script/NCMBQuery.cs:722)
……

エラー部分を見てみると、

[code]this._domainUri = new Uri (domain);[/code]

となってます。

原因

一番よくありそう(自分でもよくやる)な原因が、NCMBSettingsが存在していないから

ゲームの最初のシーンにはNCMBSettingsをちゃんと置くんですけど、
他のシーンにNCMBSettingsがないということを忘れがち。

NCMBSettingsはDontDestroyOnLoad()されているので、そのシーンを通れば何も問題ないんですが、
エディターで実行する時に途中のシーンから実行すると一度もNCMBSettingsを通らないのでNCMBに接続できないんですね。

解決方法

この場合の解決方法は下の2つだと思います。

  • エディターで実行する時もNCMBSettingsが置いてあるシーンから始める
  • NCMBを使うシーン全てにNCMBSettingsを置く

当たり前ですが毎回NCMBSettingsが置いてあるシーンを経由して各シーンに遷移するのは面倒なので、後者の「NCMBを使うシーン全てにNCMBSettingsを置く」で大丈夫だと思います。

もしこれ以外の原因だったら、Application KeyとClient Keyが間違ってるぐらいしか思いつかないですね・・・

コメント