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

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

新規登録して質問してみよう
ただいま回答率
85.37%
DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Kinect

Kinect(キネクト)はマイクロソフトから発売されたジェスチャー・音声認識によって 操作ができるデバイスです。

Q&A

解決済

2回答

12636閲覧

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

WilsonCharge

総合スコア12

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Kinect

Kinect(キネクト)はマイクロソフトから発売されたジェスチャー・音声認識によって 操作ができるデバイスです。

0グッド

0クリップ

投稿2017/10/26 13:40

編集2017/10/28 05:40

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が固定されてしまい画面に対して横に移動しなかったため、自分でプログラミング
するひつようがあると思っています。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

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 で検索すれば、ダウンロード先や使い方などはたくさん見つけることができます。

投稿2017/10/28 05:07

bboydaisuke

総合スコア5291

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WilsonCharge

2018/03/20 06:21

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

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/27 02:03

fiveHundred

総合スコア10130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WilsonCharge

2017/10/28 04:28 編集

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

2017/10/28 05: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で行いたい理由はあるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問