除动态添加控件dat.gui预设?(Save dat.gui presets for dynamic

2019-10-20 08:25发布

我动态地将控件添加到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": {}
}

我想我混淆记得()功能在某种程度上,任何想法?

Answer 1:

for循环中的行应该是:

mygui[myArray[x]] = 0.0;
var newControl = mygui2.add(mygui, myArray[x], -1, 1);

所述的第一个参数add功能执行两个功能:它是第二参数两者的源极 (控制的名称被添加,在这种情况下是myArray的[X]),而且所述目的地 。 你可以存储你喜欢的地方控制的名字,但如果第一个参数是不贵的remember()函数不会知道的控制,他们将不会被添加到GUI的__rememberedObjects属性或保存在JSON对象。



文章来源: Save dat.gui presets for dynamically added controls?