Я создаю новый скрипт из шаблона.Однако этот новый тип сценария недоступен до тех пор, пока сборка не сможет перекомпилироваться.Я пытаюсь создать экземпляр нового ScriptableObject, чтобы сгенерировать его с помощью кода.
public override void Def()
{
NewAssetName = EditorGUILayout.TextField(NewAssetName);
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Add"))
{
TemplateLines = File.ReadAllLines("E:/Unity/Editor/Data/Resources/ScriptTemplates/NewScriptableObject.cs.txt");
for (int i = 0; i < TemplateLines.Length; i++)
{
if (TemplateLines[i].Contains("#SCRIPTNAME#"))
{
TemplateLines[i] = TemplateLines[i].Replace("#SCRIPTNAME#", NewAssetName);
}
}
NewFilePath = "Assets/" + NewAssetName + '/' + NewAssetName + ".cs";
NewSOPath = "Assets/" + NewAssetName + '/' + NewAssetName + ".asset";
File.WriteAllLines(NewFilePath, TemplateLines);
ScriptableObject NewSO = CreateInstance(TypeName);
AssetDatabase.CreateAsset(NewSO, NewSOPath);
}
Все работает нормально, пока я не использую CreateInstance ();На данный момент тип еще не существует.Мне нужно подождать, пока Ассамблея перекомпилирует и капитулирует тип ...
У меня есть концепция обновлений сборки Google, но я ничего не нашел.
Я также использовал Google, используя async / await для того, чтобы отложить вызов CreateInstance (), пока ПОСЛЕ сборки, конечно, не появился новый тип ... Пока что эти попытки либо заблокировали Редактор,или не работайте так, как задумано ... (Я новичок в этом асинхронном стиле в C #)
Я открыт либо для решения сборки, либо для асинхронного решения для решения этой проблемы.