2017/03/17

[Unity] TouchScriptを使うとWin x86ビルドでログを吐く話

TouchScript+Win x86

UnityのTouchScriptを使っていてWindows x86(32bit)スタンドアロンでビルドすると終了時にクラッシュログを吐きます。(TS 8.2現在)
理由はここで議論があるように VC++のランタイムの依存関係らしいです。
VC++ redistributableを最新にすれば解決するらしいですが、一般的に配布となるとちょっと面倒です。
最新版の9.0Alpha2で直ってるみたいですが、この修正以外にも色々修正されたみたいで安定版リリースには慎重みたいです。

解決策1 WindowsTouch.dllをコピーする

公式のwiki曰く、「WindowsTouch.dllをgithubからソースを落としてきてビルドするか、最新版の9.0Alpha2をダウンロードしてコピーしてね」という事みたいです。
ビルドでも良いのですが、ここは簡単に最新版をダウンロード後にdllだけインポートし、その後Unityでビルドをする方法です。

解決策2 StandardInputの設定を変える

touchManagerを含んでいるGameObjectあたりにStandardInputModuleをアタッチして、windows8 Touchの設定を「Unity」に切り替えます。
これで一応ログは吐かれなくなります。


抜本的な解決は9.0から

抜本的な解決は9.0が出るまでお預けみたいです。
ちなみに自分のところではx64ビルドではエラーを吐きませんでした。
Windowsのゲームならば基本的にマウス入力主体なので、Windows 32bit+マルチタッチを使うゲームというのは少ないように思いますが、該当される方は注意が必要かと思います。