根据个人需要修改ViewMes与MediatorMes内的创建内容。
文件会创建在右键选择的文件夹。
using System.IO;
using UnityEditor;
using UnityEngine;
namespace XXX
{
public class CreateStrangeIocScripts : EditorWindow
{
static string path;
[MenuItem("Assets/Create/StrangeIoc")]
private static void Creat()
{
string[] strs = Selection.assetGUIDs;
path = AssetDatabase.GUIDToAssetPath(strs[0]);
EditorWindow.GetWindow(typeof(CreateStrangeIocScripts));
}
private int age;
private string[] names = new string[10];
private void OnGUI()
{
titleContent.text = "自动创建View与Mediator脚本";
GUILayout.Space(10);
age = EditorGUILayout.IntField("创建数量:", age);
if (age >= 10)
age = 10;
for (int i = 0; i < age; i++)
{
GUILayout.Space(5);
names[i] = EditorGUILayout.TextField("脚本前缀名称", names[i]);
}
if (GUILayout.Button("创建"))
{
CreatScripts();
}
}
private void CreatScripts()
{
for (int i = 0; i < age; i++)
{
if (names[i]!=string.Empty&&names[i]!=null&&names[i].Length!=0)
WriteScripts(path, names[i]);
}
AssetDatabase.Refresh();
Close();
}
private void WriteScripts(string path, string name)
{
string ViewMes =
"using strange.extensions.mediation.impl;\n"
+ "using UnityEngine;\n"
+ "namespace XXX\n"
+ "{\n"
+ " public class "+name+"View : EventView\n"
+ " {\n"
+ " internal void init()\n"
+ " {\n\n"
+ " }\n"
+ " }\n"
+ "}\n";
string MediatorMes = "using strange.extensions.mediation.impl;\n"
+ "using UnityEngine;\n"
+ " namespace XXX\n"
+ " {\n"
+ " public class "+ name + "Mediator : EventMediator\n"
+ " {\n"
+ " [Inject]\n"
+ " public "+name+"View view { get; set; }\n"
+ " public override void OnRegister()\n"
+ " {\n"
+ " view.init();\n"
+ " UpdataListeners(true);\n"
+ " }\n"
+ " \n"
+ " private void UpdataListeners(bool value)\n"
+ " {\n"
+ " \n"
+ " }\n"
+ " \n"
+ " public override void OnRemove()\n"
+ " {\n"
+ " UpdataListeners(false);\n"
+ " }\n\n"
+ " }\n"
+ " }\n";
File.WriteAllText($"{path}//{name}View.cs", ViewMes);
File.WriteAllText($"{path}//{name}Mediator.cs", MediatorMes);
}
}
}