首页 文章

通过Android中的按钮点按加载AR模型

提问于
浏览
3

我使用Unity和Vuforia创建了一个基本的AR应用程序并将其导出到Android,因此我可以在那里添加一些活动 . 当我在应用程序中使用AR相机扫描图像时,会弹出一个模型 . 那里什么新鲜事 .

我想要实现的是,当用户点击某个活动中的按钮时,可以说按钮上的文字是“大象”,应用程序中的AR相机打开,扫描图像并加载大象模型 .

我的问题是:这有可能吗?是否可以根据用户输入加载模型?如果这是可能的,那么搜索一些关于它的文档的最佳位置是什么?我已经在互联网上搜索过,但找不到任何具体的内容 . 我也是Unity&Vuforia的新手,所以我对这个程序知之甚少 . 只有一些教程涵盖的内容 .

如果这个问题已被提出/回答,我表示歉意 .

提前致谢!

1 回答

  • 8

    嗯,是的,这是可能的 . 为了使您的应用真正使用AR功能,您可以实现虚拟按钮技术 .

    老实说,在文档方面,高通毫无用处 . 但是,由于您将Unity与Vuforia Extension一起使用,因此大多数功能都可以在Unity文档中使用 .

    我将解释如何通过两种方式实现这一目标:

    1. Using Virtual Buttons (VB)

    首先,从 Assets>Qualcomm>Prefabs>Virtual Button 向场景添加/删除VB开始 . 确保VB是使用的Image Target的子代 .

    为Image Target创建一个新脚本,用于定义VB需要执行的操作 .

    您将从注册按钮开始:

    void Start () {
            VirtualButtonBehaviour[] vbs = transform.GetComponentsInChildren<VirtualButtonBehaviour> ();
    
            for (int i=0; i < vbs.Length; ++i) {
                vbs[i].RegisterEventHandler(this);
            }
    

    现在你继续开始使用按钮的功能

    public void OnButtonPressed(VirtualButtonAbstractBehaviour vb){
        //specify which button you want to function by using the if statement
        if(vb.name=="ButtonName") { callButtonfunction();}
        }
    

    同样,如果您希望按钮在发布时执行某些操作:

    public void OnButtonReleased(VirtualButtonAbstractBehaviour vb){
        //specify which button you want to function by using the if statement
        if(vb.name=="ButtonName") { callButtonfunction();}
        }
    

    如果您希望按钮控制Gameobject,则继续将GameObject声明为类中的公共变量,以便可以在Inspector中访问它并进行相应的分配 .

    public GameObject human;
    

    其中GameObject是变量类型,human是我们用于参考的变量名

    再说一遍,根据你想要获得的东西,有两种方法来分配 callbuttonfunction() 可以做什么 .

    • Application.LoadLeve("Levelname")

    这会加载一个新场景,其中新对象被加载到同一个图像目标上

    • Model.enabled(false)Elephant.enabled(true)

    这简单地禁用了当前模型并启用了Elepant模型 . 在类的开头将这些设置为公共变量将使在Inspect元素中分配模型变得更容易 .

    2. On-screen Buttons (OB)

    • 如果您想要屏幕上的按钮,那么只需将按钮UI添加到相机并将其放置在屏幕的特定角落或其他位置 .

    • 现在,如果您按下该按钮,它将在 void Update() 内,您可以使用触摸功能使用Unity中的脚本引用 .

    真的希望这可以帮助您和其他所有受到高通公司绝对支持的人 . 如果你需要更多澄清,请打我 .

相关问题