Ejemplo n.º 1
0
        public static void GeneratePathScript()
        {
            AssetDatabase.SaveAssets();

            IOUtils.CreateDirIfNotExists(EditorPathManager.DefaultPathScriptGenerateForder);

            string[] fullPathFileNames = Directory.GetFiles(EditorPathManager.DefaultPathConfigGenerateForder, "*PathDefine.asset", SearchOption.AllDirectories);

            foreach (string fullPathFileName in fullPathFileNames)
            {
                Debug.Log(fullPathFileName);
                if (!fullPathFileName.EndsWith(".meta"))
                {
                    Debug.Log("gen: " + fullPathFileName);

                    PathConfig       config    = AssetDatabase.LoadAssetAtPath <PathConfig> (fullPathFileName);
                    QNamespaceDefine nameSpace = new QNamespaceDefine();
                    nameSpace.Name        = string.IsNullOrEmpty(config.NameSpace) ? "QFramework" : config.NameSpace;
                    nameSpace.FileName    = config.name + ".cs";
                    nameSpace.GenerateDir = string.IsNullOrEmpty(config.ScriptGeneratePath) ? EditorPathManager.DefaultPathScriptGenerateForder : IOUtils.CreateDirIfNotExists("Assets/" + config.ScriptGeneratePath);
                    var classDefine = new QClassDefine();
                    classDefine.Comment = config.Description;
                    classDefine.Name    = config.name;
                    nameSpace.Classes.Add(classDefine);
                    Debug.Log(nameSpace.GenerateDir);
                    foreach (var pathItem in config.List)
                    {
                        if (!string.IsNullOrEmpty(pathItem.Name))
                        {
                            var variable = new QVariable(QAccessLimit.Private, QCompileType.Const, QTypeDefine.String, "m_" + pathItem.Name, pathItem.Path);
                            classDefine.Variables.Add(variable);

                            var property = new QProperty(QAccessLimit.Public, QCompileType.Static, QTypeDefine.String, pathItem.Name, pathItem.PropertyGetCode, pathItem.Description);
                            classDefine.Properties.Add(property);
                        }
                    }
                    QCodeGenerator.Generate(nameSpace);

                    EditorUtility.SetDirty(config);
                    Resources.UnloadAsset(config);
                }
            }

            AssetDatabase.SaveAssets();
        }
Ejemplo n.º 2
0
        public static void Generate(string ns, List <AssetBundleInfo> assetBundleInfos, string projectTag = null)
        {
            QNamespaceDefine nameSpace = new QNamespaceDefine();

            nameSpace.Name        = ns;
            nameSpace.GenerateDir = ABEditorPathConfig.ABCodeGeneratePath;
            nameSpace.FileName    = "QAssets.cs";

            for (int i = 0; i < assetBundleInfos.Count; i++)
            {
                AssetBundleInfo assetBundleInfo = assetBundleInfos [i];
                string          className       = assetBundleInfo.name;
                string          bundleName      = className.Substring(0, 1).ToUpper() + className.Substring(1);
                className = className.Substring(0, 1).ToUpper() + className.Substring(1).Replace("/", "_").Replace("@", "_").Replace("!", "_");
                if (!string.IsNullOrEmpty(projectTag))
                {
                    className  = className.Replace("_project_" + projectTag, "");
                    bundleName = bundleName.Replace("_project_" + projectTag, "");
                }
                className = className.ToUpper();

                QClassDefine classDefine = new QClassDefine();
                nameSpace.Classes.Add(classDefine);
                classDefine.Name = className;

                QVariable variable = new QVariable(QAccessLimit.Public, QCompileType.Const, QTypeDefine.String, "BUNDLE_NAME", bundleName.ToUpperInvariant());
                classDefine.Variables.Add(variable);

                foreach (var asset in assetBundleInfo.assets)
                {
                    string content = Path.GetFileNameWithoutExtension(asset).ToUpperInvariant();

                    QVariable assetVariable = new QVariable(QAccessLimit.Public, QCompileType.Const, QTypeDefine.String, content.Replace("@", "_").Replace("!", "_"), content);
                    classDefine.Variables.Add(assetVariable);
                }
            }

            QCodeGenerator.Generate(nameSpace);
        }
Ejemplo n.º 3
0
        public static void Generate(QNamespaceDefine nameSpace)
        {
            IOUtils.CreateDirIfNotExists(nameSpace.GenerateDir);

            var compileUnit   = new CodeCompileUnit();
            var codeNameSpace = new CodeNamespace(nameSpace.Name);

            compileUnit.Namespaces.Add(codeNameSpace);

            foreach (var classDefine in nameSpace.Classes)
            {
                var codeType = new CodeTypeDeclaration(classDefine.Name);
                codeNameSpace.Types.Add(codeType);

                AddDocumentComment(codeType.Comments, classDefine.Comment);

                foreach (var variable in classDefine.Variables)
                {
                    AddVariable(codeType, variable);
                }

                foreach (var property in classDefine.Properties)
                {
                    AddProperty(codeType, property);
                }
            }
            var provider = new CSharpCodeProvider();
            var options  = new CodeGeneratorOptions();

            options.BlankLinesBetweenMembers = false;
//			options.BracingStyle = "Block";
            options.BracingStyle = "C";
            StreamWriter writer = new StreamWriter(File.Open(Path.GetFullPath(nameSpace.GenerateDir + Path.DirectorySeparatorChar + nameSpace.FileName), FileMode.Create));

            provider.GenerateCodeFromCompileUnit(compileUnit, writer, options);
            writer.Close();
            AssetDatabase.Refresh();
        }