2016-09-29 10 views
0

при создании нового сценария в единстве У меня есть сценарий, который изменяет различные фрагменты информации, генерирующие информацию об авторских правах, прикрепленную к файлу, однако, хотя большая часть информации либо статична, либо процедурно определена, имя активного программиста не может быть определен в любом случае, я пытаюсь показать всплывающее окно до того, как актив фактически создан с запросом имени разработчика, но мой текущий метод предоставляет только ошибку, есть ли способ обойти это?Unity OnWillCreateAsset запрашивает DeveloperName

using UnityEngine; 
using UnityEditor; 

/* Project Name : Project Venom 
* Script Name : ScriptKeywordProcessor 
* Script Path : /Editor/ScriptKeywordProcessor.cs 
* Script Author : FaalFaazDov || Raistlin M. Thoreson 
*  Created On : 08/29/2016 12:46 
* Modified On : 09/28/2016 18:25 
*  Version : 1.1.0 
*/ 

/************************************************************************* 
* 
* Biophase Entertainment 
* __________________ 
* 
* [2016] Biophase Entertainment 
* All Rights Reserved. 
* 
* NOTICE: All information contained herein is, and remains 
* the property of Biophase Entertainment and its suppliers, 
* if any. The intellectual and technical concepts contained 
* herein are proprietary to Biophase Entertainment 
* and its suppliers and may be covered by Canadian and Foreign Patents, 
* patents in process, and are protected by trade secret or copyright law. 
* Dissemination of this information, reproduction of this material or attempting 
* to read the content of these files is strictly forbidden unless prior written 
* permission is obtained from Biophase Entertainment. 
* 
*/ 

internal sealed class ScriptKeywordProcessor : UnityEditor.AssetModificationProcessor { 

public string DeveloperName = ""; 

public static void OnWillCreateAsset(string path) { 

     EditorWindow window = EditorWindow.CreateInstance<ScriptKeywordProcessor>(); 
     window.Show(); 

} 

void OnGUI() { 

     GUILayout.Label ("Developer Name", EditorStyles.boldLabel); 
     DeveloperName = GUILayout.TextField (DeveloperName, 100); 

} 

} 

ошибка Я ПОЛУЧАТЬ является

Активы/редактор/ScriptKeywordProcessor.cs (39,38): CS0309 ошибка: Тип ScriptKeywordProcessor должны быть конвертированы в UnityEngine.ScriptableObject для того, чтобы использовать его в качестве параметра T в обобщенный тип или метод UnityEngine.ScriptableObject.CreateInstance<T>()

ответ

0

Из вашего кода ScriptKeywordProcessor не является EditorWindow, который унаследован от ScriptableObject.

Чтобы выполнить работу с GUI, вам необходимо определить другой класс, унаследованный от EditorWindow. Затем откройте окно в OnWillCreateAsset методе ScriptKeywordProcessor.