three 场景对象可以新增自定义属性吗

发布于 2022-09-12 13:17:59 字数 318 浏览 24 评论 0

如果我给Scene添加一个description属性,但是在后期操作会发现description属性并不存在
image.png

使用scene.toJSON() 转换 description属性会丢失

后来尝试把他转化为字符串的JSON.stringfy(scene) 存储起来,然后在JSON.parse(scene) 发现还是没有description属性,如下图
image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

舂唻埖巳落 2022-09-19 13:17:59

目前我没找到直接挂在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保存自定义属性,可能是在它的实例代码中见过,有点印象。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文