animation基础练习源码_读DOTS-Unity.Animation.Samples(1)笔记

animation基础练习源码_读DOTS-Unity.Animation.Samples(1)笔记_第1张图片
林七千:深入了解 Unity DOTS Sample (六): Animation 和 Part 系统​zhuanlan.zhihu.com

找到介绍DOTS-Unity.Animation的文章很少,以上是我读过的最重要的一篇,在此基础上阅读DOTS-Unity.Animation.Samples的源码文件,做如下笔记(随时补充)

初学ECS & DOTS 能力不足,我只写“我会”的, 和“我认为”的,望指正~


为了方便不滚动看代码,注释部分我“不得不 强制换行”,有碍连贯性,但比滚动强点吧~

using Unity.Animation;
using Unity.DataFlowGraph;
using Unity.Entities;
using Unity.Jobs;
using UnityEngine;

//x 这个是把 (MonoBehaviour下) GameObject做Entity转换;
namespace MyFirstAnimationClip
{
    public class MyFirstAnimationClip : MonoBehaviour, IConvertGameObjectToEntity
    {
        public AnimationClip Clip;  //x 这个是旧系统的动画类型;

        //x 为了在一个新的系统下工作(ECS),通过 IConvertGameObjectToEntity 接口, 
        //x 给当前的gameobject生成了一个替身, 即 entity.
        //x 这个是unity完成的, 并且在Convert接口中能拿到新的 entity.
        //x Convert 为什么存在呢? 因为除了转换 entity 之外,
        //x 还有一些原来gameobject上的脚本不能被 unity 自动转换, 需要自己写代码转换;
        //x 这个GameObject的实例将以Entity的形式存在,所有在MonoBehaviour上的, 
        //x 非unity自动转换的功能都将不存在,都需要自己写ECS版本的功能.
        
        //x 在这里为 entity 增加一个 (ECS框架下) 的 PlayClipComponent 组件数据(ComponentData).
        public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
        {
            //x (ECS)PlayClipComponent 是当前 entity 的动画数据
            //x (本场景例子只包含这一个功能演示,所以只有它).
            //x (ECS)PlayClipComponent 接收的是新的动画格式, 因此这里做了新旧动画格式转换.
            //x 即: (AnimationClip Clip)=>(new = ClipBuilder.AnimationClipToDenseClip(old)).
            //x 因为这个类本身是 MonoBehaviour 的,
            //x 它的成员变量(public Anima

你可能感兴趣的:(animation基础练习源码)