public PlayableStateController(PlayableGraph graph)
        {
            m_Params = new PlayableAnimatorParameter();

            m_StateLayers = new List <StateLayer>();

            m_LayerMixer = AnimationLayerMixerPlayable.Create(graph, 1);
            m_LayerMixer.SetInputWeight(0, 1f);

            var layer = new StateLayer(0, graph, m_Params);

            layer.SetPlayableOutput(0, layer.layerIndex, m_LayerMixer);
            m_StateLayers.Add(layer);     // 添加默认层

            m_Graph = graph;
        }
        public void AddLayer(int layerIndex)
        {
            if (-1 != m_StateLayers.FindIndex(l => l != null && l.layerIndex == layerIndex))
            {
                Debug.LogErrorFormat("layer:{0} has existed!", layerIndex);
                return;
            }

            var layer = new StateLayer(layerIndex, m_Graph, m_Params);

            int emptyIndex = m_StateLayers.FindIndex(l => l == null);

            if (emptyIndex != -1)
            {
                m_StateLayers[emptyIndex] = layer;
            }
            else
            {
                m_StateLayers.Add(layer);
                m_LayerMixer.SetInputCount(m_StateLayers.Count);
            }
            layer.SetPlayableOutput(0, layer.layerIndex, m_LayerMixer);
        }