最近要管理两个开发小组的开发流程,使用我常年持续整合的开发框架,保证开发小组项目代码的统一性。
同时为了方便不同项目合并的操作性,参考了当年刚入行做棋牌平台棋牌游戏的方式,使用脚本名和命名空间进行区分。
重写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创建脚本就可以自定义,当然不建议修改,最好是重写功能。
这样方便开发组员创建脚本的规范性。