目前我没找到直接挂在scene下的属性不被toJSON格式化掉的方法,不过可以通过一个繁琐点的方式实现,就是在场景里建一个隐藏的cube,给cube挂载你的自定义属性:
var scene = new THREE.Scene()
var geometry = new THREE.BoxGeometry()
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } )
var cube = new THREE.Mesh( geometry, material )
cube.userData = 'aaa'
scene.add( cube );
var json = scene.toJSON()
console.log(json)
后来发现通过
scene.userData = 'aaa'
可以不被toJSON
格式化,
threejs的文档比较乱,具体在哪看到的不记得了,它通过userData
保存自定义属性,可能是在它的实例代码中见过,有点印象。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…