我用Vuforia制作了增强现实的虚拟按钮:
using UnityEngine;
using System.Collections.Generic;
public class VBGordangDuaEventHandler : MonoBehaviour, IVirtualButtonEventHandler
{
#region PUBLIC_MEMBER_VARIABLES
/// <summary>
/// The materials that will be set for the teapot model
/// </summary>
public Material[] m_TeapotMaterials;
public AudioSource VBgordangduahitam;
public AudioSource VBgordangduamerah;
#endregion $3$
#region PRIVATE_MEMBER_VARIABLES
private GameObject mTeapot;
private List<Material> mActiveMaterials;
#endregion $4$
#region UNITY_MONOBEHAVIOUR_METHODS
void Start()
{
// Register with the virtual buttons TrackableBehaviour
VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbs.Length; ++i)
{
vbs[i].RegisterEventHandler(this);
}
// Get handle to the teapot object
// mTeapot = transform.FindChild("teapot").gameObject;
// The list of active materials
mActiveMaterials = new List<Material>();
}
#endregion $9$
#region PUBLIC_METHODS
/// <summary>
/// Called when the virtual button has just been pressed:
/// </summary>
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
Debug.Log("OnButtonPressed::" + vb.VirtualButtonName);
/*if (!IsValid())
{
return;
}*/
// Add the material corresponding to this virtual button
// to the active material list:
switch (vb.VirtualButtonName)
{
case "VBgordangduahitam":
Debug.Log ("gordangduahitam");
suaragordangduahitam.Play ();
break;
case "VBgordangduamerah":
Debug.Log ("gordang2merah");
suaragordangduamerah.Play ();
break;
}
// Apply the new material:
/*if (mActiveMaterials.Count > 0)
mTeapot.renderer.material = mActiveMaterials[mActiveMaterials.Count - 1];*/
}
/// <summary>
/// Called when the virtual button has just been released:
/// </summary>
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
if (!IsValid())
{
return;
}
// Remove the material corresponding to this virtual button
// from the active material list:
switch (vb.VirtualButtonName)
{
case "red":
mActiveMaterials.Remove(m_TeapotMaterials[0]);
break;
case "blue":
mActiveMaterials.Remove(m_TeapotMaterials[1]);
break;
case "yellow":
mActiveMaterials.Remove(m_TeapotMaterials[2]);
break;
case "green":
mActiveMaterials.Remove(m_TeapotMaterials[3]);
break;
}
// Apply the next active material, or apply the default material:
/*if (mActiveMaterials.Count > 0)
mTeapot.renderer.material = mActiveMaterials[mActiveMaterials.Count - 1];
else
mTeapot.renderer.material = m_TeapotMaterials[4];*/
}
private bool IsValid()
{
// Check the materials and teapot have been set:
return mTeapot != null;
}
#endregion $35$
为什么会出现以下错误?
1):错误CS0246:类型或命名空间名称&#39; IVirtualButtonEventHandler&#39;找不到(你错过了使用指令或汇编引用吗?)(CS0246)(Assembly-CSharp)
2):错误CS0246:类型或命名空间名称&#39; VirtualButtonAbstractBehaviour&#39;找不到(你错过了使用指令或汇编引用吗?)(CS0246)(Assembly-CSharp)
3):错误CS0246:类型或命名空间名称&#39; VirtualButtonAbstractBehaviour&#39;找不到(你错过了使用指令或汇编引用吗?)(CS0246)(Assembly-CSharp)
4):错误CS0246:类型或命名空间名称&#39; VuforiaBehaviourComponentFactory&#39;找不到(你是否缺少using指令或汇编引用?)(CS0246)(Assembly-CSharp-Editor)
如何解决这些错误?
答案 0 :(得分:2)
尝试添加
using UnityEngine;
using System.Collections.Generic;
到代码的顶部。正如@ShaiAharoni在评论中提到的,你需要引用Vuforia DLL。
您可能需要的其他参考资料包括
{{1}}
答案 1 :(得分:0)
我假设您从
复制示例登录/注册并下载示例。根据你的帖子,你没有添加对dll的引用,这些是你得到的错误。如果您下载代码示例,则可能会获得dll,以便您可以相应地引用代码示例。