UnityDots学习(五)

此篇开始研究实际应用到项目或个人Demo中。参考国外CodeMonkey的RTS包含一些基础API应用。

前言

游戏不必100%使用Dots完全实现。因为面向组件开发一个功能复杂度和调试都比面向对象要更难。对于某些模块,比如UI,事件管理系统,网络等,使用传统对象模式来实现更有效率。只有核心逻辑需要大量单位同屏运行或者很复杂的算法模型可采用Dots进行。比如RTS同时10000个单位同时移动。Unity对于托管和非托管的System有二种类型,托管是SystemBase非托管是ISystem。

Component

根据前面的介绍,Component里只能定义值类型,不能定义引用类型。如果像下图这么定义,到编辑器里编译就会报错。

可定义范围

那问题来了,除了如下图这种简单的类型外。我其他的什么都没法用了吗?

测试使用其他的值类型数据定义

Authoring时直接报错。所以没有Component不能定义复杂类型的数据。

常用的UnityComponent
1.LocalTransform:对应控制位置,旋转。

但这里没法单独设置某一个方向的Scale,还需要添加另一个组件。

NonUniformScale:使entity具备可以在某个轴上的缩放

Component上多了个这个组件

实际上了解图形学这块改的是这里的矩阵换算

2.MaterialMeshInfo对应Mesh组件对应

更换Mesh代码示例:

需要先注册Mesh

对应System里面替换。

更换Material和Mesh一样,需要注册拿id替换。

3.LinkedEntityGroup

 动态生成的entity会自动添加link,这个用来控制当整个entity销毁时,也可以把孩子节点的Component也进行删除避免报错。

一些鬼畜错误

在一个authoring上给别的GameObject添加组件时

Reimport场景会报错,且组件并没有正确添加进去,并且报错信息指向的内容让人一头雾水。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值