Unity5.2はペン(デジタイザー、スタイラス)による操作に対応していないようです。
AssetStoreに対応プラグインが一つあったがUnity5で動かない模様。
Panasonic ToughPadやMicrosoft Surface Proなどペンを使った端末で動かしたい場合、
ワコムのWintabというタブレット用APIを使うプラグインを用意する必要があります。
以下、簡単に手順を書いておきます。
1)ワコムのドライバーに含まれるWintab32.dllを入手。
下記をインストールすると /Windows/Systems32 と /Windows/SysWOW64 内に入ります。
http://us.wacom.com/en/feeldriver/
2)Wintab32.dllを使うための .NET ラッパー「WintabDN」のソースを入手。
http://www.wacomeng.com/windows/code/WintabDN.zip
3)Visual Studio Expressをインストールして、WintabDNプロジェクトをビルド。
※Visual Studio Express 2015は巨大なので2013で充分。
※プロジェクトのプロパティで対象フレームワークを「.NET Framework 3.5」、出力の種類を「クラスライブラリ」に。
※.NET4用のコードでエラーが出る個所は、.NET3.5用に修正する。
4)ビルドしてできたWintabDN.dllをUnityプロジェクトの/Assets/Plugins/に入れる。
5)下記のコードをほぼそのまま使わせていただく。
http://forum.unity3d.com/threads/wacom-tablet-input-script-in-c.317154/
※一部、コメントアウトやアンコメントする必要あり。
※MyWTPacketEventHandlerにペン座標と筆圧が届きます。
※アプリ終了時のハング対策としてmonoスレッドを閉じるコードの追記が必要。
6)ペン座標をUGUIのEventSystemに渡すためにStandaloneInputModule.csを参考にして
StylusInputModule.csを作る。
http://tips.hecomi.com/entry/2014/09/25/233823
追記:
アプリを起動して初めてタッチするときに30%くらいの確率でエラーダイアログが出る現象が起きた。
ログを見るとDllNotFoundExceptionが起きてる。
回避策としては、下記のような感じでcontextをopenした直後にGetDataPacket()を実行すること。
m_logContext = OpenTestSystemContext(ctxWidth_I, ctxHeight_I, ctrlSysCursor_I);
WintabPacket pkt = m_wtData.GetDataPacket((uint)m_logContext.HCtx, 1);
理由はわからないけどこれでエラーが起きなくなった。
コメント