开发手札:脚本命名空间自定义

      最近要管理两个开发小组的开发流程,使用我常年持续整合的开发框架,保证开发小组项目代码的统一性。
      同时为了方便不同项目合并的操作性,参考了当年刚入行做棋牌平台棋牌游戏的方式,使用脚本名和命名空间进行区分。
      重写unity创建脚本,增加一个快捷创建功能,如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Text;
using System;

public class EditorCreateMonobehaviour
{
    
    
    private const string scriptName = "ProjX";
    private const string namespaceName = "BSTI.ProjX";

    [MenuItem("Assets/Create/C# Namespace Script", false, -1)]
    static void execute()
    {
    
    
        string folder = AssetDatabase.GetAssetPath(Selection.activeInstanceID);
        string filepath = Path.Combine(Application.dataPath, folder.Replace("Assets/", ""), string.Format("{0}_NewBehaviourScript.cs", scriptName));

        StringBuilder cssb = new StringBuilder();
        cssb.Append("using System.Collections;\n");
        cssb.Append("using System.Collections.Generic;\n");
        cssb.Append("using UnityEngine;\n");
        cssb.Append("\r\n");
        cssb.Append(string.Format("namespace {0}\n", namespaceName));
        cssb.Append("{\n");
        cssb.Append(string.Format("   public class {0}_NewBehaviourScript : MonoBehaviour\n", scriptName));
        cssb.Append("   {\n");
        cssb.Append("       void Start()\n");
        cssb.Append("       {\n");
        cssb.Append("\r\n");
        cssb.Append("       }\n");
        cssb.Append("\r\n");
        cssb.Append("       void OnDestroy()\n");
        cssb.Append("       {\n");
        cssb.Append("\r\n");
        cssb.Append("       }\n");
        cssb.Append("   }\n");
        cssb.Append("}\n");

        RewriteFileContent(filepath, cssb.ToString());

        AssetDatabase.Refresh();
    }

    static bool RewriteFileContent(string filePath, string content)
    {
    
    
        try
        {
    
    
            using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write))
            {
    
    
                fs.Seek(0, SeekOrigin.Begin);
                fs.SetLength(0);
                byte[] buffer = Encoding.UTF8.GetBytes(content);
                fs.Write(buffer, 0, buffer.Length);
            }
            return true;
        }
        catch (Exception ex)
        {
    
    
            Debug.LogErrorFormat("RewriteFileContent Error filePath = {0} content = {1} ex = {2}", filePath, content, ex);
        }
        return false;
    }
}

      我们直接增加右键创建脚本功能,如下:
在这里插入图片描述      当然也可以直接修改unity monobehaviour模板,如下:

在这里插入图片描述
      修改unity自身的模板文件后,unity创建脚本就可以自定义,当然不建议修改,最好是重写功能。
      这样方便开发组员创建脚本的规范性。

猜你喜欢

转载自blog.csdn.net/yinhun2012/article/details/124864728