如何使用sceneform从场景中删除所选对象?

问题描述 投票:1回答:1
 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);
            }
        });

在这一部分我调用了函数,但是当它工作时它只删除最后添加的对象,然后它不适用于其他对象。我的错在哪里?我找不到它。

android arcore sceneform
1个回答
0
投票

你的removeAnchorNode函数似乎足够正常。问题可能在于您“选择”anchorNode的方式。

我猜你可能是在你创建的anchorNode对象中存储了最后创建的AnchorNode,因此delete函数最初起作用。但是当您再次执行此操作时,需要选择要删除的节点。虽然Sceneform负责选择节点(当你触摸它时),你需要在anchorNode变量中明确地存储引用,否则你只是一次又一次地传递已经删除的AnchorNode

© www.soinside.com 2019 - 2024. All rights reserved.