コード例 #1
0
        // [ContextMenu("CreateDll")]
        public void CreateDll()
        {
            var filename = FilenameIncludeNamespace ? $"{Namespace}.{Filename}" : Filename;
            var filePath = EditorUtility.SaveFilePanel("Save Dll", Directory, filename, "dll");

            VariableGenerator.CreateDll(Filename, filePath, Namespace, Types);
        }
コード例 #2
0
        public string GenerateField(FieldInfo fi)
        {
            var variableType = fi.FieldType.GetGenericArguments()[0];

            if (ShouldGenerateVariableInterface)
            {
                GenerateVariableInterface();
            }
            var stringBuilder = new StringBuilder();

            stringBuilder.Append("[UnityEngine.SerializeReference, SerializeReferenceButton]");
            stringBuilder.Append(" ");
            stringBuilder.AppendLine($"public {VariableInterfaceNamespace}.{variableType.Name}{VariablePropertyNameSuffix} {fi.Name};");
            return(stringBuilder.ToString());

            void GenerateVariableInterface()
            {
                var directory = Path.GetDirectoryName(AssetDatabase.GetAssetPath(Generator)) + "/" + VariableInterfaceDirectory;

                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                var filepath = $"{directory}/{variableType.Name}{VariablePropertyNameSuffix}.cs";

                if (!File.Exists(filepath) || File.ReadLines(filepath).FirstOrDefault() == _HEAD_LINE)
                {
                    using (var writer = new StreamWriter(filepath))
                    {
                        writer.WriteLine(_HEAD_LINE);
                        writer.WriteLine(VariableGenerator.NamespaceBegin(VariableInterfaceNamespace));
                        writer.WriteLine(VariableGenerator.CreateInterface(variableType, VariablePropertyNameSuffix));
                        writer.WriteLine(VariableGenerator.CreateClass(variableType, typeof(CustomVariableProperty <>), VariablePropertyNameSuffix));
                        writer.WriteLine(VariableGenerator.CreateClass(variableType, typeof(ComponentVariableProperty <>), VariablePropertyNameSuffix));
                        writer.WriteLine(VariableGenerator.CreateClass(variableType, typeof(NodeVariableProperty <>), VariablePropertyNameSuffix));
                        writer.WriteLine(VariableGenerator.CreateClass(variableType, typeof(ScriptableObjectVariableProperty <>), VariablePropertyNameSuffix));
                        writer.WriteLine(VariableGenerator.NamespaceEnd());
                    }
                }
            }
        }
コード例 #3
0
        public void CreateClassesScript()
        {
            var filePath = SaveFilePanel("Save Script", Directory, $"{Filename}-Classes", "cs");

            VariableGenerator.CreateScriptClassOnly(filePath, Namespace, Types);
        }
コード例 #4
0
        public void CreateInterfaceScript()
        {
            var filePath = SaveFilePanel("Save Script", Directory, $"{Filename}-Interface", "cs");

            VariableGenerator.CreateScriptInterfaceOnly(filePath, Namespace, Types);
        }
コード例 #5
0
        public void CreateScript()
        {
            var filePath = SaveFilePanel("Save Script", Directory, Filename, "cs");

            VariableGenerator.CreateScript(filePath, Namespace, Types);
        }