我正在统一vuforia项目中使用虚拟按钮,但我不断遇到这些错误。我所看到的所有示例都表明该代码很好。
Assets \ DataFiles \ Scripts \ VirtualButtonScript.cs(27,34):错误CS0246:找不到类型或名称空间名称'VirtualButtonAbstractBehaviour'(您是否缺少using指令或程序集引用?)
Assets \ DataFiles \ Scripts \ ARBCard.cs(32,33):错误CS0246:找不到类型或名称空间名称'VirtualButtonAbstractBehaviour'(您是否缺少using指令或程序集引用?)
这是我的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class VirtualButtonScript : MonoBehaviour, IVirtualButtonEventHandler
{
public GameObject spherego, cubego;
VirtualButtonBehaviour vrb;
// Start is called before the first frame update
void Start()
{
vrb = GetComponentInChildren<VirtualButtonBehaviour>();
vrb.RegisterEventHandler(this);
cubego.SetActive(true);
spherego.SetActive(false);
}
// Update is called once per frame
void Update()
{
}
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
cubego.SetActive(false);
spherego.SetActive(true);
}
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
cubego.SetActive(true);
spherego.SetActive(false);
}
}
答案 0 :(得分:0)
更新您的Vuforia版本yo 8.1.7
步骤如下:
https://library.vuforia.com/articles/Solution/update-installers-unity.html
答案 1 :(得分:0)
VirtualButtonAbstractBehaviour已过时。即使您使用当前项目编写下面给出的代码,它也可能无法正常工作,但是创建新项目并编辑我的示例就可以了。
以下代码已通过统一的2018.4.9f1 LTS版本和Vuforia V8.3.8进行了测试
# Gemfile
source "https://rubygems.org"
ruby '2.6.1'
gem 'my_gem', path: '/home/user/Development/my_gem'
答案 2 :(得分:0)
我正在将Unity 2019.3.13f1(64位)版本与Vuforia Engine版本9.1.7一起使用。使用虚拟按钮时(我们可以在ImageTarget> Insepector窗口> Image Target Behavior Script> Advanced> Add Virtual Button下找到该按钮),我遇到了一个无法使用IVirtualButtonEventHandler的问题。
在互联网上搜索了将近1天之后,我发现了一个链接(https://library.vuforia.com/content/vuforia-library/en/reference/unity/classVuforia_1_1VirtualButtonBehaviour.html#a3d314e8b4f58949efeb0255e47e8019b),该链接告诉新版本中特定于虚拟按钮的更改。
我发现他们已弃用IVirtualButtonEventHandler,并引入了VuforiaMonoBehavior和VirtualButtonBehavior类。对于特定于按钮事件的更改如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class vbScript : MonoBehaviour
{
void Start()
{
Debug.Log("I reached in start of image target");
zombie = GameObject.Find("zombie");
var vbbs = GetComponentsInChildren<VirtualButtonBehaviour>();
for (int i = 0; i < vbbs.Length; ++i)
{
vbbs[i].RegisterOnButtonPressed(OnButtonPressed);
vbbs[i].RegisterOnButtonReleased(OnButtonReleased);
}
Debug.Log("should start walking here");
}
public void OnButtonPressed(VirtualButtonBehaviour vb)
{
switch (vb.VirtualButtonName)
{
case "DanceButton":
animator.SetBool("isWalking", false);
animator.SetBool("isDancing", true);
break;
case "WalkButton":
animator.SetBool("isDancing", false);
animator.SetBool("isWalking", true);
break;
case "actionButton":
Debug.Log("actionButton button Pressed or found...");
zombie.GetComponent<Animation>().Play();
// animator.SetBool("isDancing", false);
//animator.SetBool("isWalking", true);
break;
default:
animator.SetBool("isWalking", false);
animator.SetBool("isDancing", false);
break;
}
}
public void OnButtonReleased(VirtualButtonBehaviour vb)
{
zombie.GetComponent<Animation>().Stop();
}
}