Exemple #1
0
        //时间线右键点击的菜单
        private GenericMenu MenuForAnimationTimeLine(JTimelineAnimation Animationline, JAnimationTrack linetrack)
        {
            GenericMenu   contextMenu     = new GenericMenu();
            List <string> allStates       = new List <string>();
            var           animationLayers = MecanimAnimationUtility.GetAllLayerNames(Animationline.AffectedObject.gameObject);

            contextMenu.AddItem(new GUIContent("AddNewTrack"),
                                false, (obj) => AddNewAnimationTrack(((JTimelineBase)((object[])obj)[0])),
                                new object[] { Animationline });

            foreach (var animationLayer in animationLayers)
            {
                int           layer          = MecanimAnimationUtility.LayerNameToIndex(Animationline.AffectedObject.gameObject, animationLayer);
                List <string> layerallStates = MecanimAnimationUtility.GetAllStateNames(Animationline.AffectedObject.gameObject, layer);
                foreach (var statename in layerallStates)
                {
                    string Addstate = "Layer/{0}/{1}";
                    allStates.Add(string.Format(Addstate, animationLayer, statename));
                }
            }
            float newTime = (((UnityEngine.Event.current.mousePosition.x + XScroll) / DisplayArea.width) * Animationline.Sequence.Duration) / XScale;

            foreach (var state in allStates)
            {
                contextMenu.AddItem(
                    new GUIContent(state),
                    false,
                    (obj) => AddNewAnimationState(((JTimelineAnimation)((object[])obj)[0]), ((JAnimationTrack)((object[])obj)[1]), ((float)((object[])obj)[2]), ((string)((object[])obj)[3])),
                    new object[] { Animationline, linetrack, newTime, state.Split('/')[2] }
                    );
            }
            //删除时间线
            contextMenu.AddItem(new GUIContent("DeleteAnimationLine"),
                                false, (obj) => RemoveAnimationTimeline(((JTimelineAnimation)((object[])obj)[0]), ((JAnimationTrack)((object[])obj)[1])),
                                new object[] { Animationline, linetrack });
            return(contextMenu);
        }