我用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:找不到类型或命名空间名称'IVirtualButtonEventHandler'(您是否缺少using指令或程序集引用?)(CS0246)(Assembly-CSharp)2):错误CS0246:类型或命名空间找不到名称'VirtualButtonAbstractBehaviour'(您是否缺少using指令或程序集引用?)(CS0246)(Assembly-CSharp)3):错误CS0246:找不到类型或命名空间名称'VirtualButtonAbstractBehaviour'(是你吗?缺少using指令或程序集引用?)(CS0246)(Assembly-CSharp)4):错误CS0246:找不到类型或命名空间名称'VuforiaBehaviourComponentFactory'(您是否缺少using指令或程序集引用?)( CS0246)(Assembly-CSharp-Editor)
我该如何解决这些错误?
2 回答
尝试添加
在代码的顶部 . 正如@ShaiAharoni在评论中提到的,您需要引用Vuforia DLL .
您可能需要的其他参考资料包括
我假设您复制了示例
https://developer.vuforia.com/forum/unity-3-extension-technical-discussion/virtual-buttons-no-response-tap
登录/注册并下载示例 . 根据你的帖子,你没有添加对dll的引用,这些是你得到的错误 . 如果您下载代码示例,则可能会获得dll,因此您可以相应地引用代码示例 .