私は、卓上RPGグループの秘密プロジェクトを作るのにUnityとVuforiaを使用しています。今、私はVuforiaのサイトで参照が不足していて、Webページを削除しています。UnityとVuforia:ターゲットのイメージIDとGUI Windows
現在のところ私の問題は次のとおりです。ターゲット画像を5つまで追跡し、スキャンしたときにUIの画像とともに追跡する独自の個別GUIウィンドウを作成することができます。私はそれの一部を働いている、私はすべての画像を追跡することができますが、一度に1つのウィンドウが表示されます。私は、実際のイメージが動作することを知っています。なぜなら、私はプレースホルダー3dオブジェクトをデバッグに含めるからです。
私はGUIのWindows用のベースに使用するスクリプト:https://developer.vuforia.com/forum/faq/unity-how-can-i-popup-gui-button-when-target-detected
私は私の問題は、OnTrackableStateChanged()(ライン19-32リンク;以下28-43私のコード)にあると思います。複数のターゲット画像を考慮に入れるように変更する必要があります。 VuforiaのAPIサイトやフォーラムの参照が削除されてしまったので、再び私はSUPERに間違いがあります。私の目標を達成するために何ができるか考えている人はいますか?私は現在、getID()関数を使用して、どういうわけかOnTrackableStateChange()を使って、変更されたIDが元のアイデアと異なるかどうかを確認しています。しかし、ここでも簡単な解決策を見落とすことができます。
これが明確でない場合は、もう少し詳しく説明してください。以下は、上のリンクのコンポーネントを使用しているコードです。お手伝いありがとう。 :
using UnityEngine;
using System.Collections;
public class ButtonPopup : MonoBehaviour, Vuforia.ITrackableEventHandler
{
private Vuforia.TrackableBehaviour mTrackableBehaviour;
private bool mShowGUIWindow = false;
private TargetScreenCoords coordinateScript;
public int ID;
private Rect mWindowRect;
public string Name;
public int Health;
public string Status;
public bool Villain;
void Start()
{
mTrackableBehaviour = GetComponent<Vuforia.TrackableBehaviour>();
if (mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
}
public void OnTrackableStateChanged(
Vuforia.TrackableBehaviour.Status previousStatus,
Vuforia.TrackableBehaviour.Status newStatus)
{
if (newStatus == Vuforia.TrackableBehaviour.Status.DETECTED ||
newStatus == Vuforia.TrackableBehaviour.Status.TRACKED)
{
mShowGUIWindow = true;
}
else
{
mShowGUIWindow = false;
}
}
void OnGUI()
{
coordinateScript = GetComponent<TargetScreenCoords>();
mWindowRect = new Rect(coordinateScript.screenPoint.x, Mathf.Abs(coordinateScript.screenPoint.y), 120, 100);
if (Villain == true)
{
GUI.backgroundColor = Color.red;
}
if (Villain == false)
{
GUI.backgroundColor = Color.green;
}
if (mShowGUIWindow)
{
mWindowRect = GUI.Window(ID, mWindowRect, DoMyWindow, "ID:" + ID);
}
}
void DoMyWindow(int windowID)
{
GUI.Label(new Rect(10, 20, 100, 60), new GUIContent("Name: " + Name + "\nHealth: " + Health + "\nStatus: " + Status));
if (GUI.Button(new Rect(10, 70, 100, 20), "Edit Button"))
{
print("Got a click");
Villain = !Villain;
}
}
}
ヘルプ/アイデアをお寄せいただきありがとうございます。
ImageTargetsの代わりにMultiTargetプレハブを使用してみましたか? –
MultiTargetは具体的に向きを探します。したがって、2つの画像が一緒になっている場合、それはあることをするか、またはそれほど離れている場合は別のことを行います。私は私のプロジェクトで(まだ)それを望んでいません。 – Travis