public static void Write(string name, string scriptsFolder, string scriptsNamespace)
        {
            var scriptFile = scriptsFolder + "/{0}Data.cs".FillFormat(name);

            var writer = File.CreateText(scriptFile);

            var codeWriter = new FileCodeWriter(writer);

            if (!scriptsNamespace.IsNotNull() || scriptsNamespace.Equals(""))
            {
                scriptsNamespace = "UGUIFramework";
            }

            var rootCode = new RootCode()
                           .Using("UnityEngine")
                           .Using("UnityEngine.UI")
                           .Using("UGUIFramework")
                           .EmptyLine()
                           .Namespace(scriptsNamespace, nsScope =>
            {
                nsScope.Class(name + "Data", null, false, false, classScope =>
                {
                    classScope.Custom("protected " + name + " window;");
                    classScope.EmptyLine();
                    classScope.CustomScope("public " + name + "Data(" + name + " window)", false, (function) =>
                    {
                        function.Custom("this.window = window;");
                    });
                });
            });

            rootCode.Gen(codeWriter);
            codeWriter.Dispose();
        }
        public static void Write(string name, string scriptsFolder, string scriptsNamespace)
        {
            var scriptFile = scriptsFolder + "/{0}.Designer.cs".FillFormat(name);

            var writer = File.CreateText(scriptFile);

            var codeWriter = new FileCodeWriter(writer);

            if (!scriptsNamespace.IsNotNull() || scriptsNamespace.Equals(""))
            {
                scriptsNamespace = "UGUIFramework";
            }

            var rootCode = new RootCode()
                           .Using("UnityEngine")
                           .Using("UnityEngine.UI")
                           .Using("UGUIFramework")
                           .EmptyLine()
                           .Namespace(scriptsNamespace, nsScope =>
            {
                nsScope.Class(name, null, true, false, classScope =>
                {
                    classScope.CustomScope("public override void OpenWindow(UGUIWindowInfo windowInfo)", false,
                                           function =>
                    {
                        function.Custom("base.OpenWindow(windowInfo);");
                        function.Custom("windowTransform = GetComponent<RectTransform>();");
                        function.Custom("//在此处添加初始化窗口代码");
                    });
                    classScope.EmptyLine();
                    classScope.CustomScope("public override void ShowWindow()", false,
                                           function => { });
                    classScope.EmptyLine();
                    classScope.CustomScope("public override void HideWindow()", false,
                                           function => { });
                    classScope.EmptyLine();
                    classScope.CustomScope("public override void CloseWindow()", false,
                                           function =>
                    {
                        function.Custom("//在此处添加销毁窗口代码");
                        function.Custom("");
                        function.Custom("windowData = null;");
                    });
                });
            });

            rootCode.Gen(codeWriter);
            codeWriter.Dispose();
        }
        public static void Write(string name, string srcFilePath, string srcNamespace)
        {
            var scriptFile = srcFilePath;

            if (File.Exists(scriptFile))
            {
                return;
            }

            var writer = File.CreateText(scriptFile);

            var scriptNamespace = srcNamespace;

            if (!srcNamespace.IsNotNull() || srcNamespace.Equals(""))
            {
                scriptNamespace = "UGUIFramework";
            }

            var root = new RootCode()
                       .Using("System")
                       .Using("UnityEngine")
                       .Using("UnityEngine.UI")
                       .Using("UGUIFramework")
                       .EmptyLine()
                       .Namespace(scriptNamespace, ns =>
            {
                ns.Custom("// Generate Id:{0}".FillFormat(Guid.NewGuid().ToString()));
                ns.Class(name, "UGUIWindowBase", true, false, (classScope) =>
                {
                    classScope.Custom("public const string Name = \"" + name + "\";");
                    classScope.EmptyLine();

                    classScope.EmptyLine();
                    classScope.Custom("private " + name + "Data windowData = null;");

                    classScope.EmptyLine();
                });
            });

            var codeWriter = new FileCodeWriter(writer);

            root.Gen(codeWriter);
            codeWriter.Dispose();
        }