一、基础介绍
在Baker中进行GetEntity对象的时候,需要填入TransformUsageFlags类型的参数;针对不同类型的参数,看看GameObject所转换后的IComponentData有什么差异;
演示代码:
public class CubeAuthoring : MonoBehaviour
{
public TransformUsageFlags transformUsageFlags;
private void OnEnable()
{
}
internal class CubeAuthoringBaker : Baker<CubeAuthoring>
{
public override void Bake(CubeAuthoring authoring)
{
var entity = GetEntity(authoring.transformUsageFlags);
}
}
}
二、TransformUsageFlags
1、TransformUsageFlags.None
表示转换后的Entity不需要把Transform的组件转换为相关的Components;
转换后只是一个简单的Entity;
2、TransformUsageFlags.Dynamic
该枚举类型就是需要转换必要的Transform组件;在这里必要的就是指LocalToWorld,LocalTransform,从上面的截图中可以看出,相对于None,这里的Dyanmic明显的新增了两个组件类型;
默认==GetEntity()==的参数就是Dynamic类型;
3、TransformUsageFlags.WorldSpace
该类型表示转换后的Entity是没有父节点的,也就是直接按照世界空间来处理的;无论改节点是否有父节点,通过WorldSpace转换后都没有父节点;自己就是根节点;
可以看下面的效果:没有父节点
如果把WorldSpace 修改为Dynamic就可以看到它有父节点了:
所以,WorldSpace无论是否有父节点,转换后都不会有父节点的;
4、TransformUsageFlags.NonUniformScale
该类型表示需要转换Transform的相关组件LocalToWorld和不同比例缩放组件PostTransformMatrix;从上面的截图中可以看到添加的效果;
5、TransformUsageFlags.Renderable
改类型需要转换Transform的必要组件LocalToWorld组件用于渲染;但在运行的时候会移除该组件;