コード例 #1
0
 public void SetTempContainerToScriptable(LevelDataWall scriptable, LevelDataWallContainer container)
 {
     scriptable.Tiles          = container.TileList.ToArray();
     scriptable.Walls          = container.WallList.ToArray();
     scriptable.Size           = container.Data1;
     scriptable.StartPositionX = container.Data2.Item1;
     scriptable.StartPositionY = container.Data2.Item2;
     EditorUtility.SetDirty(scriptable);
 }
コード例 #2
0
    void OnGUI()
    {
        EditorWindow window = this;

        prefabSettings = (PrefabSettingsWall)EditorGUILayout.ObjectField(
            "Prefab Settings Wall:", prefabSettings, typeof(PrefabSettingsWall), false);


        if (UseSingle)
        {
            GUILayout.Label("Convert CSV level files to Target type");

            CsvFile = (TextAsset)EditorGUILayout.ObjectField(
                "SourceCSV: ", CsvFile, typeof(TextAsset), false);

            LevelData = (LevelDataWall)EditorGUILayout.ObjectField(
                "Existing Target:", LevelData, typeof(LevelDataWall), false);

            CreateNewScriptableObject =
                EditorGUILayout.Toggle("CreateNewTarget:", CreateNewScriptableObject);
            ScriptableObjectName = EditorGUILayout.TextField("NewSOName", ScriptableObjectName);

            if (GUILayout.Button("CONVERT"))
            {
                LevelDataWallContainer container = ParseCsv(CsvFile);

                if (CreateNewScriptableObject)
                {
                    LevelData = (LevelDataWall)ScriptableObject.CreateInstance(typeof(LevelDataWall));

                    AssetDatabase.CreateAsset(LevelData,
                                              $"{ParentFolderPath}/{ScriptableObjectName}.asset");
                }

                SetTempContainerToScriptable(LevelData, container);
                EditorUtility.SetDirty(LevelData);

                this.Close();
            }
        }
        else
        {
            GUILayout.Label("Convert list of CSV files to Target type ");
            ScriptableObjectBaseName =
                EditorGUILayout.TextField("TargetBaseName", ScriptableObjectBaseName);

            ScriptableObjectNameFirstNumber =
                EditorGUILayout.IntField("StartNumberingFrom...", ScriptableObjectNameFirstNumber);

            ScriptableObject   target           = this;
            SerializedObject   so               = new SerializedObject(target);
            SerializedProperty CsvFilesProperty = so.FindProperty("CsvFiles");
            EditorGUILayout.PropertyField(CsvFilesProperty, true);
            so.ApplyModifiedProperties();


            if (GUILayout.Button("CONVERT"))
            {
                int i = 0;
                foreach (var file in CsvFiles)
                {
                    LevelDataWallContainer container = ParseCsv(file);

                    LevelData = (LevelDataWall)ScriptableObject.CreateInstance(typeof(LevelDataWall));

                    AssetDatabase.CreateAsset(LevelData,
                                              $"{ParentFolderPath}/{ScriptableObjectBaseName}{ScriptableObjectNameFirstNumber + i}.asset");

                    SetTempContainerToScriptable(LevelData, container);
                    i++;
                }

                this.Close();
            }
        }
    }