Urho3D序列化

    从Serializable派生的类可以通过定义属性将其自动序列化为二进制或XML格式。属性存储到每个类的上下文中。场景加载/保存和网络复制都是通过从Serializable派生Node和Component类来实现的。

    支持的属性类型是Variant支持的所有属性类型,不包括指针和自定义值。

    属性可以引用对象的成员,也可以定义setter和getter函数。成员属性也可以具有后置操作:不带参数的成员函数,每次将值分配给属性时都会调用该函数。

    还支持从零开始的枚举,以便枚举值可以作为文本存储到XML文件中,而不仅仅是数字。

以下宏可用于定义属性:

  • URHO3D_ATTRIBUTE:对象的成员。应可转换为指定类型。
  • URHO3D_ATTRIBUTE_EX:对象的成员。设置属性时调用后期设置成员函数回调。
  • URHO3D_ACCESSOR_ATTRIBUTE:Getter和setter成员函数。指定类型的属性值被传递给setter,并期望从getter返回。
  • URHO3D_CUSTOM_ATTRIBUTE:直接使用Variant值的Getter和setter函数对象。请参见MakeVariantAttributeAccessor()
  • URHO3D_ENUM_ATTRIBUTE:具有人类可读名称的32位基于零的整数枚举。
  • URHO3D_ENUM_ATTRIBUTE_EX:与URHO3D_ATTRIBOTE_EX相同,用于枚举。
  • URHO3D_ENUM_ACCESSOR_ATTRIBUTE:与URHO3D_ACCESSO_ATTRIBUTE相同,用于枚举。
  • URHO3D_CUSTOM_ENUM_ATTRIBUTE:与URHO3D-CUSTOM_ATTRIBOTE相同,用于枚举。

要实现对属性的副作用,可以重写Serializable中的默认属性访问函数。请参见OnSetAttribute()和OnGetAttribute()。

每个属性可以具有以下标志的组合:

  • AM_FILE:用于文件序列化(加载/保存。)
  • AM_NET:用于网络复制。
  • AM_LATESTDATA:经常更改网络复制的数据,只有最新的值才重要。用于运动和动画。
  • AM_NOEDIT:是一个内部属性,不显示用于编辑。
  • AM_NODEID:是一个节点ID,在实例化场景内容时可能需要重写。
  • AM_COMPONENTID:是一个组件ID,在实例化场景内容时可能需要重写。

默认标志为AM_FILE和AM_NET。请注意,定义AM_FILE或AM_NET都是合法的,这意味着属性只有运行时意义(可能用于编辑)

有关使用URHO3D_ATTRIBUTE族助手宏注册属性的示例,请参见现有引擎类(例如,在Scene或Graphics子目录中)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘小舟舟,游大世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值