IVirtualButtonEventHandler接口未在Unity中实现

时间:2019-04-03 15:11:15

标签: c# unity3d vuforia

我正在统一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);
    }
}

3 个答案:

答案 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();
    }
}