13

我发现这个函数可以删除一个 gui 元素,但我认为它已经过时了。到目前为止,我还没有找到知道如何删除 gui 任何部分的其他人,无论是整个 dat.GUI() 还是只是添加到 dat.GUI() 的元素。第一个可能足以满足我的需要(只需将 dat.GUI() 一起删除),但任何一个都会非常有帮助!

应该删除一个 dat.GUI()

gui = new dat.GUI();

...

removeGui(gui);

function removeGui(gui, parent) 
{
    if(!parent) 
    {
        parent = dat.GUI.autoPlaceContainer;
    }
    parent.removeChild(gui.domElement);
}

但是返回错误:无法调用未定义的方法'removeChild',所以我猜测autoPlaceContainer 是错误的。

这个函数的原作者留下了这些注释:

其中参数 gui 表示要删除的 DAT.GUI,parent 是父容器,如果在实例化 DAT.GUI 时未指定 domElement,则无需传递父容器。

4

5 回答 5

12
var gui = new dat.GUI();
item = gui.add(text, 'message');

删除:

gui.remove(item);

如果您的项目在文件夹中,您必须执行以下操作:

folder.remove(item);
于 2014-01-19T19:37:35.327 回答
10

如果要删除整个 dat.GUI 元素及其所有侦听器,可以使用gui.destroy()

如果要重置 dat.GUI 的值,可以使用datGUI.__controllers.forEach(controller => controller.setValue(controller.initialValue));

于 2016-07-07T04:45:54.377 回答
1

You can delete dat.GUI element like this:

gui.remove()

于 2021-01-21T01:30:34.797 回答
1

您可以尝试使用以下方法隐藏它:

gui.hide()
于 2021-01-21T00:37:41.350 回答
-1

更改 dat.gui.js 文件中的删除功能:“slice”想要成为“splice”。

答案可以在这里找到:https ://github.com/ulyssesp/dat.gui/commit/86f43c0be5db08c9a6d7339aa8287620306fb0b5

于 2015-04-03T18:54:53.470 回答