引用类型 (Reference Type)
引用类型 (Reference Type)
引用类型(Reference Type)是 FrooxEngine 数据模型中的一种类型指定。它们与值类型相对,其特点是在内存中只存在于一个位置,并且是通过其 引用ID(RefID) 而不是通过值来进行“传递”的,例如通过 SyncRef<T>。
所有引用类型都共享以下属性:
- 内部通过 class(类)、interface(接口)、delegate(委托) 或 record(记录) 定义。
- 使用 引用ID(RefID) 进行引用和传递,通常通过
SyncRef<T>字段。 - 实现了 IWorldElement 接口,这意味着它们可以被转换为 IWorldElement 或从 IWorldElement 转换回来。
引用类型的一些示例包括 Slot(插槽)、User(用户)、Component(组件) 和 Field(字段)。通过 struct(结构体) 定义的类型不是引用类型,例如 Rect 类型。
一般来说,ProtoFlux 中与引用类型对应的是 Object(对象) 类型。然而,它们并不完全等同,因为 ProtoFlux 独立于 FrooxEngine,因此并不天生了解其数据模型。在使用与 FrooxEngine 交互的节点(如 Data Model Store)与完全包含在 ProtoFlux 内部的节点(如 Local 变量)时,这可能会引起一些混淆。
例如,Slot(插槽)在数据模型中是一个“对象引用(Object Ref)”,但在 ProtoFlux 上下文中仅仅是一个“对象(Object)”。String(字符串) 在数据模型中是一个“值(Value)”,但在 ProtoFlux 上下文中却是一个“对象字段(Object Field)”。
参见
- 值类型 (Value type):FrooxEngine 和 ProtoFlux 数据模型中的另一种类型体系。
- Object:ProtoFlux 中非值类型的类型。
- 微软关于 C# 引用类型的文档。请注意,这与 FrooxEngine 的引用类型的具体实现并不完全相同,因为 FrooxEngine 将其自己的数据模型嵌套在 C# 中,但文章中提到的概念在很大程度上也适用于 FrooxEngine 的数据模型。
No comments to display
No comments to display