THREE.js : Object3D.userData 它是如何工作的?

THREE.js : Object3D.userData how does it work?

所以我想知道 .userData 属性 在 Object3D class 中是如何工作的。

这就是我的理解:

它是一个空对象,不被 threejs 的任何内部逻辑使用,这是一种安全的方式来存放我想分配给给定对象的数据。如果发生冲突,将自定义内容添加到对象本身可能会导致问题。

但唯一的问题是我不知道什么时候使用它或如何在我的代码中实现它?但是有人能告诉我我说的对吗?

根据 three.js documentation

.userData : Object An object that can be used to store custom data about the Object3D. It should not hold references to functions as these will not be cloned.

什么是 Object3D

This is the base class for most objects in three.js and provides a set of properties and methods for manipulating objects in 3D space.

因此 Object3D 将成为 three.js 中大多数对象的基础 class,包括相机、灯光、网格、材质等

每当您需要存储一些关于您可能想要用于显示或任何其他计算的特定对象的自定义信息时,您将把它存储在 .userData 属性.

一个简单的示例可能是您创建了一个几何体(一个 BoxGeometry),现在您想要跟踪用户点击该几何体的次数。这个计数可以保存在.userData属性中。稍后您可以根据需要使用它,将其显示在某处或进行进一步计算。