Unigine中的ComponentSystem系统如何使用

  1. ComponentSystem的代码结构图如下

  1. ComponentSystem的总体方法

和Unity3D中的ComponentSystem类似,该系统将可以添加多个类实现到一个对象中。使得程序的逻辑可以分块在不同的地方。

其具体行为类似于插件系统,但比插件方便很多。因为节点对象,可以绑定多个 Component类实现,同时,又可以在源代码级别进行分解。使用非常方便。

截至Unigine V2.7.1源代码版本中,该系统还处于独立状态,但预计新版本系统中,将会整合进SDK中

 

以下是具体步骤,如何使用ComponentSystem:

  1. 目前该系统还没有在SDK中默认包含,需要在Sample目录下找到。位置是

SDK 目录下的\source\samples\Api\Logics\ComponentSystem

将ComponentSystem目录完整复制到你要用到的项目中,并且包含。【最好保证目录结构层次】

 

  1. 写一个继承自ComponentBase的类,用作外部实现具体逻辑的类,这个类后续会添加绑定到某个节点对象上。

这个类的具体实现中,有三大块比较重要

  1. 其中第一个是所有属性对象实质上存储到了data目录下的一个名叫该属性名的.prop属性文件中。
  2. 第二部分是写了暴露在编辑器中的属性内容
  3. 第三部分是介入到World场景中几个重要循环函数的重载。组件的具体实现其实也就是在其中。

 

  1. 在代码中使用刚才创建的组件类,如下图

  1. RegisterComponent函数将我们刚才创建的组件类TestA添加到组件系统中

其内部实现,应该是一个map list,维持着一堆

  1. 中间这部分是获取默认场景中的材质球对象(仅测试用)
  2. 将刚才创建的组件类testA,添加到节点对象myTestNode中.然后你就可以在具体的update函数中做各种行为,目前我们就操作材质球移动。

整体代码如下图:

 

完整的项目代码在附件中。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拉达曼迪斯II

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

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

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

打赏作者

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

抵扣说明:

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

余额充值