LeapSDK beta2を他のOculusSDKやOvrvisionSDKと同時にUnity環境で使う時の注意点

概要

完全にこれはバッドノウハウと言うか、相性問題なので僕がハマったこと、解決策を書くことで他の誰か(含む未来の僕)が回避できればそれで良いつもりの、雑なエントリです。

環境

  • Windows 8.1(64bit)
  • Unity 4.3.4f(Pro)
  • OvrvisionSDK v0.6
  • LeapSDK v2(beta)LeapMotionSkeletalAssets-0d307adfc4e34b9c828e42c01c7c79b0.unitypackage

症状

OvrvisionSDKを含んだプロジェクトに、LeapSDKのunitypackageを追加して、Unityを一度終了して再度開きデバッグ実行すると、Ovrvision系のスクリプトからdllNoFoundExceptionエラーが起きてしまう。
これは最小構成でも再現した。

対処法 根本的な対処が下にあります!そちらを参照ください

まとめ

dllあるのに無いって言われたら無理やりパスを通してしまう!というのは常にオプションとして覚えておくと良い。 faiさんありがとうございました!

fai into VR (faifx) on Twitter

以下、翌朝に追記

根本的な対処

LeapMotionSDKのフォーラムを見ていたら、同様の症状が報告されていた。
https://community.leapmotion.com/t/skeletal-tracking-developer-beta-is-now-public-new-build-sdk-v2-0-0-15464/1120/9

known issueなようです。(いつかは解決するはず) Unityを一度閉じて Assts/Pluginにあるleap関連のdll群を

  • 32bitのdllは Assets/Plugins/x86
  • 64bitのdllは Assets/Plugins/x86_64

に移動して、plugin直下はフォルダだけにして再起動すると解決します。

Unityはdllを読みに行く場所の順序と言うのがあって、作法としては

  • 32bitのdllは Assets/Plugins/x86
  • 64bitのdllは Assets/Plugins/x86_64

に配置するのが正しい。 しかしLeapSDK v2(beta)はそれらフォルダの親フォルダにdllを配置してしまう。これは行儀がよろしくない。

これはUnityからすると「プラグインのdllはこのプロジェクトのどこかなー?」と探した時にLeapのdllを見つけて「Assets/Pluginの場所がdll置き場」と勘違いしてしまっている。
それ自体は問題ないが、他のdllを含むプラグイン共存しようとすると、他のdllが一切見つからない状況になってしまう。と言う訳だそうです。