javascript - 可以将场景对象实例存储为场景的属性吗?
问题描述
这是一个关于 javascript 和 three.js 编码风格约定的问题。我更喜欢使用最新的 ES-whatever 约定。
我想知道是否不是照常做:
var scene = new THREE.Scene();
var cube = new THREE.Mesh(new THREE.BoxGeometry(1,1,1), new THREE.MeshBasicMaterial(0xffffff))
scene.add(cube)
可以将网格对象(和其他对象,可能是灯光甚至相机)存储为场景对象的属性:
const scene = new THREE.Scene(); // or var, but that's not my question
scene.cube = THREE.Mesh(new THREE.BoxGeometry(1,1,1), new THREE.MeshBasicMaterial(0xffffff))
scene.add(scene.cube)
我喜欢在命名空间下引用所有 three.js 对象的想法scene
——这让我以后更容易访问它们。我知道我可以将它与 .name 和 .getObjectByName 一起使用,但这需要更多代码并且对我来说似乎更混乱。
解决方案
Object3D 派生对象上有一个名为 .userData 的字段,您可以存储应该保存/序列化的内容。但就直接在对象上存储道具而言..它可以工作..但如果您最终覆盖某些内容或稍后使用您的属性名称的三个版本可能会出现问题...
编辑:在阅读了这里的其他帖子之后,他们提出了一些好的观点,我还想在那里抛出你可以继承内置的三个对象并制作你自己的自定义类型来拥有你的东西。那可能更整洁。
推荐阅读
- ios - 在uitableview中编辑特定单元格
- wordpress - 在 Timber 中添加 WP 自定义徽标作为 Webp 图像
- kendo-grid - Kendo Gird .Update 调用java脚本函数
- matlab - 将 Matlab 函数 (mscript) 转换为 simulink 模型
- python - 将列表字符串列表转换为python中的日期以进行时间序列建模 -
- windows - Windows FTP 命令行客户端不会使用 mget * 下载所有文件
- javascript - JWT-解码需要未定义,jwt解码未定义
- scope - openscad 范围问题 a=a+1 解决方法
- amazon-web-services - 169.254.169.254 是否仅由 AWS EC2 使用?
- python - 如何实现从视图到表单的所有业务逻辑?