Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEditor;
- using System.CodeDom;
- using System.IO;
- using System.CodeDom.Compiler;
- public class CreateClassMenuItem {
- [MenuItem("Assets/Create/File/Class...", false, 13)]
- private static void CreateClass() {
- var filePath = EditorUtility.SaveFilePanelInProject("Save file", "Class", "cs", "Enter class name");
- if (!string.IsNullOrEmpty(filePath)) {
- using (var streamWriter = new StreamWriter(File.Create(filePath))) {
- using (var textWriter = new IndentedTextWriter(streamWriter, " ")) {
- var fileName = Path.GetFileNameWithoutExtension(filePath);
- var unit = BuildClassUnit(fileName);
- var provider = CodeDomProvider.CreateProvider("CSharp");
- provider.GenerateCodeFromCompileUnit(unit, textWriter, new CodeGeneratorOptions());
- }
- }
- }
- AssetDatabase.Refresh();
- }
- private static CodeCompileUnit BuildClassUnit(string className) {
- var unit = new CodeCompileUnit();
- var @namespace = new CodeNamespace();
- @namespace.Imports.AddRange(new [] {
- new CodeNamespaceImport { Namespace = "UnityEngine" },
- new CodeNamespaceImport { Namespace = "System.Collections" }
- });
- unit.Namespaces.Add(@namespace);
- var declaration = new CodeTypeDeclaration {
- Name = className,
- IsClass = true
- };
- @namespace.Types.Add(declaration);
- return unit;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement