コード例 #1
0
        /// <summary>
        /// Creates the asset and any directories that are missing along its path.
        /// </summary>
        /// <param name="unityObject">UnityObject to create an asset for.</param>
        /// <param name="unityFilePath">Unity file path (e.g. "Assets/Resources/MyFile.asset".</param>
        public static void CreateAssetAndDirectories(UnityEngine.Object unityObject, string unityFilePath)
        {
            var pathDirectory = Path.GetDirectoryName(unityFilePath) + UnityDirectorySeparator;

            AssetDatabaseUtility.CreateDirectoriesInPath(pathDirectory);

            AssetDatabase.CreateAsset(unityObject, unityFilePath);
        }
コード例 #2
0
        /// <summary>
        /// Loads the saved data, stored as a ScriptableObject at the specified path. If the file or folders don't exist,
        /// it creates them.
        /// </summary>
        /// <returns>The saved data as a ScriptableObject.</returns>
        /// <param name="unityPathToFile">Unity path to file (e.g. "Assets/Resources/MyFile.asset")</param>
        /// <typeparam name="T">The ScriptableObject type</typeparam>
        public static T LoadOrCreateSaveData <T>(string unityPathToFile) where T : ScriptableObject
        {
            var loadedSettings = LoadSaveData <T>(unityPathToFile);

            if (loadedSettings == null)
            {
                loadedSettings = ScriptableObject.CreateInstance <T>();
                AssetDatabaseUtility.CreateAssetAndDirectories(loadedSettings, unityPathToFile);
            }

            return(loadedSettings);
        }
コード例 #3
0
        private void ShowTargetLocationOptions(string label, AssetTargetLocation targetLocation)
        {
            EditorGUILayout.BeginHorizontal();

            GUILayout.Label(label, GUILayout.Width(130f));

            targetLocation.locationType = (AssetTargetLocationType)EditorGUILayout.EnumPopup(targetLocation.locationType, GUILayout.Width(130f));

            bool prevEnabled = GUI.enabled;

            GUI.enabled = targetLocation.locationType == AssetTargetLocationType.GlobalDirectory;

            string globalDirectory = targetLocation.globalDirectory;

            if (GUILayout.Button("Select", GUILayout.Width(50f)))
            {
                var startDirectory = globalDirectory;
                if (!Directory.Exists(startDirectory))
                {
                    startDirectory = Application.dataPath;
                }
                startDirectory = Application.dataPath;

                var path = EditorUtility.OpenFolderPanel("Select Target Location", globalDirectory, "");
                if (!string.IsNullOrEmpty(path) && AssetDatabase.IsValidFolder(AssetDatabaseUtility.GetAssetPath(path)))
                {
                    targetLocation.globalDirectory = AssetDatabaseUtility.GetAssetPath(path);
                }
            }

            if (targetLocation.locationType == AssetTargetLocationType.GlobalDirectory)
            {
                string displayDirectory = "/" + globalDirectory;
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label(displayDirectory, GUILayout.MaxWidth(300f));
            }

            GUI.enabled = prevEnabled;

            EditorGUILayout.EndHorizontal();
        }