Beispiel #1
0
        public void visitCheck(String dirPath)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(dirPath);

            //遍历文件
            foreach (FileInfo fileInfo in dirInfo.GetFiles())
            {
                if (fileInfo.Extension == ".prefab" || fileInfo.Extension == ".fire")
                {
                    //检查prefab文件
                    Dictionary <String, DataClass.NodeClass> nodeDic = BuildNodeDic(fileInfo.FullName);
                    foreach (KeyValuePair <String, DataClass.NodeClass> keyValue in nodeDic)
                    {
                        DataClass.NodeClass node = keyValue.Value;
                        String  logStr           = fileInfo.FullName + ": " + node.nodePath + " have: ";
                        Boolean checkFlag        = true;
                        for (int i = 0; i < _checkComponentNameArr.Length; i++)
                        {
                            String checkComponentName = _checkComponentNameArr[i];
                            logStr = logStr + checkComponentName + " ";
                            if (!node.judgeHaveComponent(checkComponentName))
                            {
                                checkFlag = false;
                                break;
                            }
                        }
                        if (checkFlag)
                        {
                            //打印
                            Console.WriteLine(logStr);
                        }
                    }
                }
            }
            //遍历文件夹
            foreach (DirectoryInfo childDirInfo in dirInfo.GetDirectories())
            {
                visitCheck(childDirInfo.FullName);
            }
        }
Beispiel #2
0
        //生成一个<idStr, NodeClass>
        private Dictionary <String, DataClass.NodeClass> BuildNodeDic(String prefabPath)
        {
            String fileStr = getFileContent(prefabPath);

            if (fileStr == null)
            {
                //读取失败
                Console.WriteLine("文件读取失败,路径为: " + prefabPath);
                return(null);
            }
            Dictionary <String, DataClass.NodeClass> dic = new Dictionary <String, DataClass.NodeClass>();
            //Json读取
            JArray jArray = (JArray)JsonConvert.DeserializeObject(fileStr);

            //开始读取
            //第一步生成节点字典
            for (int i = 0; i < jArray.Count; i++)
            {
                if (jArray[i]["__type__"].ToString() == "cc.Node")
                {
                    //新建一个节点
                    //判断有没有父节点
                    String parentStr = jArray[i]["_parent"].ToString();
                    //这边的ID是按列表顺序来的
                    String nodeIdStr = "" + i;
                    String nodeName  = jArray[i]["_name"].ToString();
                    if (parentStr == "null" || parentStr == "")
                    {
                        //没有父节点
                        DataClass.NodeClass nodeClass = new DataClass.NodeClass(nodeIdStr, null, nodeName);
                        dic.Add(nodeIdStr, nodeClass);
                    }
                    else
                    {
                        JObject jsonObj = (JObject)JsonConvert.DeserializeObject(parentStr);
                        if (jsonObj == null)
                        {
                            DataClass.NodeClass nodeClass = new DataClass.NodeClass(nodeIdStr, null, nodeName);
                            dic.Add(nodeIdStr, nodeClass);
                        }
                        else
                        {
                            string parentNodeIdStr         = jsonObj["__id__"].ToString();
                            DataClass.NodeClass parendNode = null;
                            if (dic.TryGetValue(parentNodeIdStr, out parendNode))
                            {
                                DataClass.NodeClass nodeClass = new DataClass.NodeClass(nodeIdStr, parendNode, nodeName);
                                dic.Add(nodeIdStr, nodeClass);
                            }
                            else
                            {
                                DataClass.NodeClass nodeClass = new DataClass.NodeClass(nodeIdStr, null, nodeName);
                                dic.Add(nodeIdStr, nodeClass);
                            }
                        }
                    }
                }
            }
            //第二步 判断组件
            for (int i = 0; i < jArray.Count; i++)
            {
                if (jArray[i]["node"] != null)
                {
                    //判断有没有node这个属性
                    //获取nodeId
                    JObject             jsonObj   = (JObject)JsonConvert.DeserializeObject(jArray[i]["node"].ToString());
                    string              nodeIdStr = jsonObj["__id__"].ToString();
                    DataClass.NodeClass node      = dic[nodeIdStr];
                    if (node != null)
                    {
                        node.addComponentName(jArray[i]["__type__"].ToString());
                    }
                }
            }
            return(dic);
        }