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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

解決済

2回答

2171閲覧

【Kudan】を使用してUnityでPCビルドがしたい【追記あり】

ichi_goo

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2017/01/19 07:27

編集2017/01/23 00:58

###前提・実現したいこと
SLAMを使用してマーカーレストラッキングを実現させています。
その際、アプリをサーフェイスなどのタブレットPCで
起動させたいと考えています。
なので、Unityで対象をPCにしてビルドしてみたのですが、
エラーが発生し、ビルドが成功しません。

Kudanのサンプルシーンを試しにビルドしています。
以下のコードはすべてサンプルに入っているものです。

###発生している問題・エラーメッセージ

エラーメッセージは2種類で

Assets/KudanAR/Scripts/Classes/TrackeriOS.cs(435,25): error CS0103: The name `NativeInterface' does not exist in the current context
Error building Player because scripts had compiler errors

の2つです。
下のメッセージに関しましては、
スクリプトのエラーが発生しているからビルドできないよ、
という意味であると理解しておりますので、
問題は1つめのエラーメッセージの内容です。

###該当のソースコード
問題が起きているのはTrackeriOS.cs内の以下の関数です。

C#

1 public override void ArbiTrackGetPose(out Vector3 position, out Quaternion orientation) 2 { 3 float[] result = new float[7]; 4 NativeInterface.ArbiTrackGetPose(result); 5 6 position = new Vector3(result[0], result[1], -result[2]); 7 orientation = new Quaternion(result[3], result[4], result[5], result[6]); 8 }

問題のArbiTrackGetPoseを呼んでいる所は

C#

1 public void ArbiTrackGetPose(out Vector3 position, out Quaternion orientation) 2 { 3 _trackerPlugin.ArbiTrackGetPose(out position, out orientation); 4 }

となっております。
_trackerPluginは以下のように定義されます。

C#

1 void GetPlugin () 2 { 3#if UNITY_EDITOR_OSX 4 _trackerPlugin = new TrackerOSX(); 5 checkEditorLicenseKey(); 6 checkLicenseKeyValidity(); 7#elif UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN 8 _trackerPlugin = new TrackerWindows(); 9 checkEditorLicenseKey(); 10 checkLicenseKeyValidity(); 11#elif UNITY_IOS 12 _trackerPlugin = new TrackeriOS(_background); 13#elif UNITY_ANDROID 14 _trackerPlugin = new TrackerAndroid(_background); 15#endif 16 }

windows版でビルドしたいのにiOSのスクリプトでエラーが発生していますので、
どこかおかしいのは分かるのですが、GetPluginを修正して、
_trackerPluginを分岐させたのに治らないので質問させていただきます。

###試したこと
1、GetPlugin内にUNITY_STANDALONE_WINの記述がなかったため、
それを追加。

2、ビルドを試しているPCには元々カメラが搭載されていないので、
Webカメラを接続し、ビルド

3、以下をコメント化してビルド

#elif UNITY_IOS _trackerPlugin = new TrackeriOS(_background);

上記どれを試してみても、エラーメッセージの文言は変わりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
Unity5.3.6f1
Kudan1.4
C#

###追記(20170123):
エラーが発生するのはビルドを実行した直後です。
それまではconsoleにエラーは表示されていません。

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

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

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

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

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

guest

回答2

0

自己解決

Kudanの公式に問い合わせをしてみました。
その結果が返ってきましたので、ご報告します。

Unity版ではPCビルドはサポートしていないそうです。
お騒がせいたしました。

ご回答いただきましたsakura_hana様、
ありがとうございました。

投稿2017/01/27 00:08

ichi_goo

総合スコア18

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

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

0

NativeInterfaceが「NativeInterface.cs」というファイルに記載されたクラスであるなら、
「ArbiTrackGetPose」はstaticメソッドにする必要があります。

あるいは、

Hoge NativeInterface = new Hoge();
という形で変数の定義を行う必要があります。

(プラットフォームに関係無い、C#のスクリプト記述エラーです)

投稿2017/01/20 07:32

sakura_hana

総合スコア11427

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

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

ichi_goo

2017/01/23 00:54

ご回答ありがとうございます。 ですが、ArbiTrackGetPoseは以下のように Staticメソッドになっています……。 NativeInterface.cs public static extern void ArbiTrackGetPose(float[] result);
sakura_hana

2017/01/23 07:39

NativeInterface.csでnamespaceは使われていますか? TrackeriOS.csにusingを加える必要があるかもしれません。
ichi_goo

2017/01/24 02:49

NativeInterface.csは using UnityEngine; using System.Text; using System.Collections; using System.Runtime.InteropServices; namespace Kudan.AR { // 略 } TrackeriOS.csは using UnityEngine; using System.Text; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; namespace Kudan.AR { // 略 } となっています。 NativeInterface.csとTrackeriOS.csが同じnameSpaceを使っている場合は 大丈夫ですか?
sakura_hana

2017/01/27 01:14

通常であれば同じnamespaceを使用しているのであればusingは不要です。 今回の場合、そもそもPC版に対応していないとのことなので、NativeInterfaceがPC環境では存在しないようにしている(Pluginフォルダに入っているか、独自に除外しているか等)のが原因かなーと思います。 解決されているとのことですが、参考までに……
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問