ユーザーがどの「フォルダ」を入れるかを選択できる拡張子ファイルのリストを持つカスタムエディタを作成しようとしています。ポップアップの選択されたインデックス(移動する必要がある拡張の数に基づいてそれらの配列を持っています)は変更されず、最後の位置にとどまります。EditorGUILayoutポップアップが選択項目の変更をドロップダウンした後に変更を受け付けない
public class ExtensionWindow : EditorWindow
{
ExtensionBank extBank;
string[] exts;
public bool[] extToggles;
public static List<string> extensions;
public static List<string> categories;
public static Vector2 scrollPosition;
[MenuItem("Build Master's Dream/Organize Files")]
static void Organize()
{
ExtensionWindow myWindow = (ExtensionWindow)EditorWindow.GetWindow(typeof(ExtensionWindow), true, "Extensions");
myWindow.minSize = new Vector2(300.0f, 300.0f);
myWindow.maxSize = new Vector2(300.0f, 300.0f);
}
void Awake()
{
//Get all Category names and store them in a List<>
LoadFolderNames();
LoadFolders();
extBank = new ExtensionBank();
//Populate the bank of Extensions from the .txt file
bool success;
success = extBank.PopulateList();
exts = new string[extBank.GetNumOfExtensions];
if (success)
{
for (int i = 0; i < extBank.GetNumOfExtensions; i++)
string shortExtensions = extBank.GetExtensions(i);
}
}
void OnGUI()
{
//extToggles = new bool[extBank.GetNumOfExtensions];
int[] index = new int[extBank.GetNumOfExtensions];
int selectedIndex = 0;
GUILayout.BeginArea(new Rect(0, 0, 300, 300));
EditorGUILayout.BeginVertical();
scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
for (int i = 0; i < index.Length; i++)
{
index[i] = EditorGUILayout.Popup(extBank.GetExtensions(i), index[i], categories.ToArray(), GUILayout.Width(275));
EditorGUILayout.Space();
}
if (GUILayout.Button("Make Your Dream Come True", EditorStyles.miniButtonLeft))
{
string[] shortCategories = categories.ToArray();
AssetDatabase.Refresh();
}
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
GUILayout.EndArea();
}
void LoadFolders()
{
foreach (string cat in categories)
{
string projectPath = Application.dataPath + "/";
if (cat != "Select Category") ;
{
Directory.CreateDirectory(projectPath + cat);
}
}
AssetDatabase.Refresh();
}
void BeginMoveOperation(string ext, string cat)
{
Debug.Log("Data path is: " + Application.dataPath.ToString());
string localPath = Application.dataPath;
DirectoryInfo dir = new DirectoryInfo(localPath);
FileInfo[] info = dir.GetFiles("*.*");
foreach (FileInfo f in info)
{
Debug.Log("Name is: " + f.Name);
Debug.Log("Extension is: " + f.Extension);
MoveAssetsIntoFolders(f.Name, f.Extension, f.FullName);
}
}
static void MoveAssetsIntoFolders(string fileName, string extension, string oldPath)
{
}
void LoadFolderNames()
{
var path = "Assets/Scripts/Editor/Extensions.txt";
if (File.Exists(path))
{
try
{
var fileContent = File.ReadAllLines(path);
categories = new List<string>();
foreach (var line in fileContent)
{
if (line != "")
{
if ((line.Substring(0, 1) != "" || line.Substring(0, 1) != null) && line.Substring(0, 1) != ".")
{
categories.Add(line);
}
}
}
}
catch (Exception ex)
{
Debug.Log(ex);
}
}
}
void OrganizeScripts()
{
Assembly _assembly = Assembly.Load("Assembly-CSharp");
foreach (Type type in _assembly.GetTypes())
{
if (type.IsClass)
{
if (type.BaseType.FullName.Contains("MonoBehaviour")) //Standard Unity Scripts
{
}
else if (type.BaseType.FullName.Contains("Editor")) //Unity Editor Files
{
}
else //All others, likely .js scripts
{
私もそれを試しましたが、同じエラー –
あなたはあなたがそうしようとしているところでコードを投稿できますか? –
ここにクラス全体があります。リンクされているすべてのアイテムは、私も渡すことができます。 –