渋谷ほととぎす通信

「Unityをわかりやすく」初心者のためのゲーム作りブログ

Unity TouchScriptの実機ビルドエラーにハマる

Unity TouchScriptの実機ビルドエラーにハマる

こんにちは、Unityエンジニアのオオバです。

Unityアセットストアには2013年頃から存在するTouchScript。
手軽にタップやドラッグ、ピンチインアウトなどの特にモバイルデバイスではよく必要とされるが、実装するのは少し面倒くさい、これらの機能をお手軽に追加することが出来るヘルパーアセットです。

TouchScript | Input Management | Unity Asset Store

オオバが最後に触ったのは2014年頃。

久々にTouchScriptを導入する機会があり、その際にハマったポイントがあったので共有しておきます。

👉DOTweenの教科書を読んでUnityアニメーションをプログラミングしてみよう!

実機ビルドでコケる

ヌルヌルとUnityエディタ上では気持ちよく動く状態まで実装しました。
ただ、ピンチインアウトなどは2本の指で実際に触ってみないと良さはわかりませんので、実機ビルドは必須です。
早速手持ちのiPhone6sで試してみようとXcodeで実行してみると以下のエラー。

UnauthorizedAccessException: Access to the path "/var/containers/Bundle/Application/ ID/hoge.app/TouchEvents.bin" is denied.  
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x00000] in :0  
  at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode) [0x00000] in :0  
  at TouchScript.Debugging.Loggers.FileWriterLogger..ctor () [0x00000] in :0  
  at TouchScript.Debugging.TouchScriptDebugger.ClearPointerLogger () [0x00000] in :0  
  at UnityEngine.ScriptableObject.CreateInstance[T] () [0x00000] in :0  
  at TouchScript.Debugging.TouchScriptDebugger.get_Instance () [0x00000] in :0  
  at TouchScript.Core.TouchManagerInstance.Awake () [0x00000] in :0  
  at UnityEngine.GameObject.AddComponent[T] () [0x00000] in :0  
  at TouchScript.Core.TouchManagerInstance.get_Instance () [0x00000] in :0  
  at TouchScript.Core.LayerManagerInstance.Awake () [0x00000] in :0  
  at UnityEngine.GameObject.AddComponent[T] () [0x00000] in :0  
  at TouchScript.Core.LayerManagerInstance.get_Instance () [0x00000] in :0  
  at TouchScript.Layers.TouchLayer.Awake () [0x00000] in :0  

原因はTOUCHSCRIPT_DEBUG定義

Unity TouchScriptの実機ビルドエラーにハマる_0

Window > TouchScript > Settingsを実行すると、TouchScriptの設定画面が表示されます。

Unity TouchScriptの実機ビルドエラーにハマる_1

この設定画面で上図のように、Enable Debug Modeにチェックを入れると、TOUCHSCRIPT_DEBUGシンボルが定義されてしまいます。

Unity TouchScriptの実機ビルドエラーにハマる_2

このように。

まとめ

良かれと思ってデバッグモードにしましたが、実機ビルド時はTOUCHSCRIPT_DEBUGは外しましょう。

以上

「Unity初心者大学」というUnity初心者向けのYouTube始めました!!
ぜひチャンネル登録をお願いします!

最後まで読んでいただきありがとうございました!
すばらしいUnityライフをお過ごしください。

オススメ記事
検証環境
  • Unity2018.3.2f1
  • TouchScript 9.0
  • iOS 12.1.2 iPhone6s