質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.78%

UNITYにdllファイルをインポートしC#で関数を使えるようにする方法

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 6,862

WilsonCharge

score 13

dll_unity
error
UNITYをつかってKinectを動かしたいのですがその際に
用意したMicrosoft.Kinect.dllというファイルをインポートして
プログラムでusing Microsoft.Kinect;といったふうに
使いたいのですがdllファイルをunityにインポートする方法がわかりません。
またAssetsファイルに入れず他のファイルからvisual stdioで参照をしても
unityのほうでerror cs0234がでました。
説明が下手ですが、回答の方よろしくおねがいします。

補足追加。
Unity用のパッケージをインポートすると大量のerrorがでました。
推測なのですが私の使っているKinectはV2ではなくV1だからだと思います。
なのでV1用にKinect for windows のヴァージョンは1.8を入れています。
またunityのAssetStoreにてKinect with MS-SDKをインポートしkinectを動かくすことはできます。
ただそれだと腰のあたりのBoneが固定されてしまい画面に対して横に移動しなかったため、自分でプログラミング
するひつようがあると思っています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

CS0234 のコンパイル エラーについては、Visual Studio でアセンブリに対する参照を追加しても Unity はそれを知ることができないので、Unity は単純にそんなクラスや namespace は知らないというエラーを出しています。VS は Unity にとってスクリプト エディタ/デバッガーなので、参照という .NET の機能は Unity にとっては使えません。つまりこの方法を追求しても意味はありません。

また、Microsoft.Kinect.dll のプラグイン エラーは、「このマネージド dll は .NET Framework 4.0 以降で使えるものであり、Unity は .NET Framework 3.5 以下のマネージド dll しか扱えないので、使えない」ということを言っています。

該当の dll はおそらく Kinect for Windows SDK の一部でしょうから、それの .NET Framework 3.5 以下対応のアセンブリがあればそれをプラグインとして追加してやれば該当の警告は出なくなります。

ただし、現状の Unity は .NET Framework 4.0 には対応しているようですから、Unity のバージョンが古いことが問題で、Unity のバージョンを上げることでも警告は出なくなるかもしれません。

それから、不安なのは、マネージド dll がインポートできたからと言ってそれで使えるようになるとは限らないことです。そのため、今まで一度も Unity で Kinect を動かしたことがないならば、まずは Microsoft がリリースしている Kinect for Windows 用の UnityPackage を入れて動かしてみたほうがよいと思います。これは kinect for windows unity で検索すれば、ダウンロード先や使い方などはたくさん見つけることができます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/20 15:21

    いろいろアップデートしていなかったものをアップデートしたりファイルを整理したりしたらうまく動きました。ありがとうございました

    キャンセル

0

Kinectを持っていないので、間違っていたらすいません。

Microsoft.Kinect.dllは「Managed」と「Native」のどちらでしょうか?
これを確認するには、「Project」ウィンドウにMicrosoft.Kinect.dllをドラッグで入れた後、それをクリックし、「Inspector」ウィンドウの「Information→Type」を確認すればよいです。
これが「Managed」だった場合は、この時点で動くようになっているはずですので、確認してみてください。
「Native」の場合は、このdllを直接使うことは難しいでしょう(少なくとも私は知りません)。

もしくは、以下のページにUnity用のパッケージがあるので、それをダウンロードした方がよいかもしれません。
(分かりづらいですが、「NuGet and Unity Pro add-ons」にある「Unity Pro packages」がそれです)
https://developer.microsoft.com/en-us/windows/kinect/tools

名前に「Pro」と付いてますが、現在では「Personal」でも動作するとのことです。
http://www.naturalsoftware.jp/entry/2015/03/05/010303

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/28 13:28 編集

    上に新たに画像を追加した通りManagedとなっているのですが、
    よく見るとしたにerrorのようなものが表示されていました。
    もしこのerrorの意味も分かりましたら、教えていただけると幸いです。
    またCS0234のerror画像も一応はっておきます。

    キャンセル

  • 2017/10/28 14:21

    こちらで試したところ、「Build Settings...」の「Player Settings...」から、「Other Settings」→「Configuration」→「Scripting Runtime Version」を「Stable (.NET 3.5 Equivalent)」から「Experimental (.NET 4.6 Equivalent)」にするとこのエラーは表示されなくなりました。
    ただ、今度は別のエラー(Loading script assembly "Assets/Microsoft.Kinect.dll" failed!)が出てしまうので、うまくいかない可能性が大きいと思います(無視してビルドすることは出来ますが、Kinectを持っていないので動くかどうかは確かめられませんでした)。

    bboydaisukeさんの言う通り、Unity用のパッケージを入れた方がよいと思いますが、dllで行いたい理由はあるのでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る