Advertisement
Guest User

Untitled

a guest
May 26th, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. using UnityEditor;
  2. using System.CodeDom;
  3. using System.IO;
  4. using System.CodeDom.Compiler;
  5.  
  6. public class CreateClassMenuItem {
  7. [MenuItem("Assets/Create/File/Class...", false, 13)]
  8. private static void CreateClass() {
  9. var filePath = EditorUtility.SaveFilePanelInProject("Save file", "Class", "cs", "Enter class name");
  10. if (!string.IsNullOrEmpty(filePath)) {
  11. using (var streamWriter = new StreamWriter(File.Create(filePath))) {
  12. using (var textWriter = new IndentedTextWriter(streamWriter, " ")) {
  13. var fileName = Path.GetFileNameWithoutExtension(filePath);
  14. var unit = BuildClassUnit(fileName);
  15. var provider = CodeDomProvider.CreateProvider("CSharp");
  16. provider.GenerateCodeFromCompileUnit(unit, textWriter, new CodeGeneratorOptions());
  17. }
  18. }
  19. }
  20. AssetDatabase.Refresh();
  21. }
  22.  
  23. private static CodeCompileUnit BuildClassUnit(string className) {
  24. var unit = new CodeCompileUnit();
  25.  
  26. var @namespace = new CodeNamespace();
  27. @namespace.Imports.AddRange(new [] {
  28. new CodeNamespaceImport { Namespace = "UnityEngine" },
  29. new CodeNamespaceImport { Namespace = "System.Collections" }
  30. });
  31. unit.Namespaces.Add(@namespace);
  32.  
  33. var declaration = new CodeTypeDeclaration {
  34. Name = className,
  35. IsClass = true
  36. };
  37. @namespace.Types.Add(declaration);
  38.  
  39. return unit;
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement