// 解析 Xml
        public void parseXml()
        {
            clear();

            string path = ExportUtil.getDataPath("Res/Config/Tool/ExportSkelAnimatorController.xml");

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(path);
            XmlNode rootNode = xmlDoc.SelectSingleNode("Root");

            XmlNodeList controllerNodeList = rootNode.SelectNodes("Controller");
            XmlElement controllerElem;
            XmlAnimatorController controller;

            foreach (XmlNode controllerNode in controllerNodeList)
            {
                controllerElem = (XmlElement)controllerNode;
                controller = new XmlAnimatorController();
                //m_curXmlAnimatorController = controller;
                m_controllerList.Add(controller);
                controller.parseXml(controllerElem);
            }

            XmlNodeList pathNodeList = rootNode.SelectNodes("Path");
            XmlElement pathElem = null;
            XmlPath xmlPath = null;

            foreach (XmlNode pathNode in pathNodeList)
            {
                pathElem = (XmlElement)pathNode;
                xmlPath = new XmlPath();
                m_xmlPathList.Add(xmlPath);
                xmlPath.parseXml(pathElem);
            }
        }
Example #2
0
        // 暂时就支持一层,只支持一个参数
        public static AnimatorController BuildAnimationController(XmlAnimatorController controllerData)
        {
            // 创建动画控制器
            AnimatorController animatorController = AnimatorController.CreateAnimatorControllerAtPath(controllerData.controllerFullPath);

            controllerData.animatorController = animatorController;

            // 设置控制器参数
            int paramsIdx = 0;

            foreach (var param in controllerData.getParams.paramList)
            {
                animatorController.AddParameter(param.name, param.type);
                param.animatorControllerParameter = animatorController.parameters[paramsIdx];

                ++paramsIdx;
            }
            //AnimatorControllerParameter[] parameters = animatorController.parameters;
            //controllerData.getParams.parameters = parameters;

            // 创建层,默认会创建一个 Layer,名字是 BaseLayer,其它的 Layer 需要自己创建
            AnimatorControllerLayer layer = null;
            int layerIdx = 0;

            for (; layerIdx < controllerData.layers.layerList.Count; ++layerIdx)
            {
                // 获取当前层
                if (layerIdx < animatorController.layers.Length)        // 如果 Layer 已经有了,第一层默认创建的,不用自己创建
                {
                    layer = animatorController.layers[layerIdx];
                }
                else        // 除第一层外,需要自己创建,创建层的时候,会默认创建当前层的主状态机
                {
                    animatorController.AddLayer(controllerData.layers.layerList[layerIdx].name);
                    layer = animatorController.layers[layerIdx];
                }

                layer.name = controllerData.layers.layerList[layerIdx].name;        // 设置名字

                controllerData.layers.layerList[layerIdx].animatorControllerLayer = layer;
                BuildAnimationStateLayer(controllerData.layers.layerList[layerIdx]);
                //BuildStateMachineTransition(controllerData.layers.layerList[layerIdx]);
            }

            AssetDatabase.SaveAssets();
            return(animatorController);
        }
Example #3
0
        protected void onFindOneFile(string fullPath)
        {
            string ext = ExportUtil.getFileExt(fullPath);
            string nameNoExt = ExportUtil.getFileNameNoExt(fullPath);

            XmlAnimatorController controller = null;
            if (ExportUtil.FBX == ext)
            {
                if (!nameNoExt.Contains(ExportUtil.AT))      // 如果包含 @ ,就说明是一个动画
                {
                    m_xmlTmp.SetAttribute("outname", nameNoExt);
                    controller = new XmlAnimatorController();
                    ExportAnimatorControllerSys.m_instance.controllerList.Add(controller);
                    controller.parseXml(m_xmlTmp);

                    // 调整完整的文件名字
                    controller.adjustFileName(nameNoExt);
                }
            }
        }
Example #4
0
        protected void onFindOneFile(string fullPath, string name)
        {
            string ext       = UtilPath.getFileExt(fullPath);
            string nameNoExt = UtilPath.getFileNameNoExt(fullPath);

            XmlAnimatorController controller = null;

            if (ExportUtil.FBX == ext)
            {
                if (!nameNoExt.Contains(ExportUtil.AT))      // 如果包含 @ ,就说明是一个动画
                {
                    m_xmlTmp.SetAttribute("outname", nameNoExt);
                    controller = new XmlAnimatorController();
                    ExportAnimatorControllerSys.m_instance.controllerList.Add(controller);
                    controller.parseXml(m_xmlTmp);

                    // 调整完整的文件名字
                    controller.adjustFileName(nameNoExt);
                }
            }
        }
Example #5
0
        // 解析 Xml
        public void parseXml()
        {
            clear();

            string path = ExportUtil.getDataPath("Res/Config/Tool/ExportSkelAnimatorController.xml");

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(path);
            XmlNode rootNode = xmlDoc.SelectSingleNode("Root");

            XmlNodeList           controllerNodeList = rootNode.SelectNodes("Controller");
            XmlElement            controllerElem;
            XmlAnimatorController controller;

            foreach (XmlNode controllerNode in controllerNodeList)
            {
                controllerElem = (XmlElement)controllerNode;
                controller     = new XmlAnimatorController();
                //m_curXmlAnimatorController = controller;
                m_controllerList.Add(controller);
                controller.parseXml(controllerElem);
            }

            XmlNodeList pathNodeList = rootNode.SelectNodes("Path");
            XmlElement  pathElem     = null;
            XmlPath     xmlPath      = null;

            foreach (XmlNode pathNode in pathNodeList)
            {
                pathElem = (XmlElement)pathNode;
                xmlPath  = new XmlPath();
                m_xmlPathList.Add(xmlPath);
                xmlPath.parseXml(pathElem);
            }
        }