我发现这个函数删除了一个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);
}
但是给出了错误:无法调用undefined的方法'removeChild',所以我猜测autoPlaceContainer是错误的。
此功能的原作者留下了这些注释:
其中参数gui表示要删除的DAT.GUI,parent是父容器,如果在实例化DAT.GUI时未指定domElement,则不需要传递父级。
答案 0 :(得分:8)
var gui = new dat.GUI();
item = gui.add(text, 'message');
要删除:
gui.remove(item);
如果您的商品位于文件夹中,则必须执行以下操作:
folder.remove(item);
答案 1 :(得分:3)
如果要删除整个dat.GUI元素及其所有侦听器,可以使用gui.destroy()
如果要重置dat.GUI的值,可以使用datGUI.__controllers.forEach(controller => controller.setValue(controller.initialValue));
答案 2 :(得分:1)
您可以尝试使用以下方法隐藏它:
function f<T extends undefined>(a: number, b?: () => T): void;
function f<T extends Record<keyof T, unknown>>(a: number, b: () => T): void;
function f<T extends Record<keyof T, unknown> | undefined>(a: number, b?: () => T): void {
}
答案 3 :(得分:1)
您可以像这样删除 dat.GUI 元素:
gui.remove()
答案 4 :(得分:-1)
更改dat.gui.js文件中的删除功能:&#34; slice&#34;希望成为&#34;拼接&#34;。
答案可以在这里找到:https://github.com/ulyssesp/dat.gui/commit/86f43c0be5db08c9a6d7339aa8287620306fb0b5