如何使用SceneForm从场景中删除选定的对象?

时间:2019-02-14 13:43:22

标签: android arcore sceneform

 private AnchorNode anchorNode;
 private void removeAnchorNode(Node nodeRemove) {

        //Remove an anchor node
        if(nodeRemove instanceof  AnchorNode){

            if(((AnchorNode)nodeRemove).getAnchor() != null) {
                ((AnchorNode) nodeRemove).getAnchor().detach();
            }
        }

        if (!(nodeRemove instanceof Camera) && !(nodeRemove instanceof Sun)) {
            nodeRemove.setParent(null);
        }
    }

我的删除功能在上方

FloatingActionButton dlt =(FloatingActionButton) findViewById(R.id.delete);
        dlt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //delete();
                removeAnchorNode(anchorNode);
            }
        });

,在这一部分中,我调用该函数,但是一直在工作时,它只会删除最后添加的对象,然后对其他对象不起作用。我的错在哪里我找不到。

1 个答案:

答案 0 :(得分:0)

您的removeAnchorNode函数似乎足够正确。问题可能出在您“选择” anchorNode的方式上。

我想您可能正在将最后创建的AnchorNode存储在您创建的anchorNode对象中,因此删除功能最初会起作用。 但是,再次执行此操作时,需要选择要删除的节点。尽管Sceneform(在您触摸它时)会选择节点,但您需要将引用显式存储在anchorNode变量中,因为否则,您将一次又一次地传递已删除的AnchorNode