我正在向dat.gui界面动态添加控件,但“保存设置”功能无法识别它们。
var mygui = new dat.GUI();
mygui.remember(mygui);
// standard way of adding a control
mygui.control1 = 0.0;
var control = mygui.add(mygui, 'control1', -1, 1);
// adding controls dynamically
var myArray = ['control2', 'control3'];
var controls = [];
for (x in myArray) {
controls[myArray[x]] = 0.0;
var newControl = mygui.add(controls, myArray[x], -1, 1);
}
控件全部按预期工作,但是当我单击齿轮图标时,设置JSON只包含第一个控件或我以正常方式添加的任何其他控件:
{
"preset": "Default",
"closed": false,
"remembered": {
"Default": {
"0": {
"control1": 0.5,
}
}
},
"folders": {}
}
我认为我在某种程度上混淆了remember()功能,任何想法?
答案 0 :(得分:2)
for循环中的行应为:
mygui[myArray[x]] = 0.0;
var newControl = mygui2.add(mygui, myArray[x], -1, 1);
add
函数的第一个参数执行两个函数:它是第二个参数的源(要添加的控件的名称,在本例中是myArray) [x])还有目的地。您可以将控件名称存储在任何位置,但如果第一个参数不是gui,则remember()
函数将不知道控件,并且它们不会添加到gui的{{1} }属性或保存在JSON对象中。