Пример #1
0
    public static void CreateMyAsset()
    {
        NoiseBox asset = ScriptableObject.CreateInstance <NoiseBox>();

        // AssetDatabase.CreateAsset(asset, "Assets/Fighter.asset");
        //AssetDatabase.SaveAssets();
        var path = "";
        var obj  = Selection.activeObject;

        if (obj == null)
        {
            path = "Assets";
        }
        else
        {
            path = AssetDatabase.GetAssetPath(obj.GetInstanceID());
        }
        if (path.Length > 0 && Directory.Exists(path))
        {
            ProjectWindowUtil.CreateAsset(asset, path + "Noise.asset");
        }
        else
        {
            ProjectWindowUtil.CreateAsset(asset, "Assets/Noise.asset");
        }



        //EditorUtility.FocusProjectWindow();

        //Selection.activeObject = asset;
    }
Пример #2
0
        public static void CreateAsset <T>() where T : ScriptableObject
        {
            T asset = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(asset, $"New {typeof(T).ToString()}.asset");
            Selection.activeObject = asset;
        }
Пример #3
0
        public static T CreateAssetInSelectedDirectory <T>(string name = null) where T : ScriptableObject
        {
            var asset = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(asset, (string.IsNullOrEmpty(name) ? "New " + typeof(T).Name : name) + ".asset");
            return(asset);

            /*
             * T asset = ScriptableObject.CreateInstance<T>();
             *
             * string path = GetAssetSelectedPath();
             *
             * string objName = typeof(T).ToString();
             * string objExt = Path.GetExtension(objName);
             * if (!string.IsNullOrEmpty(objExt))
             * {
             *  objName = objExt.Remove(0, 1);
             * }
             * string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + (string.IsNullOrEmpty(name)? "/New " + objName : "/"+name) + ".asset");
             *
             * AssetDatabase.CreateAsset(asset, assetPathAndName);
             * Selection.activeObject = asset;
             *
             * AssetDatabase.SaveAssets();
             * AssetDatabase.Refresh();
             * EditorUtility.FocusProjectWindow();
             * return asset;*/
        }
Пример #4
0
        /// <summary>
        /// Create asset of type T at current project window location
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="filename"></param>
        /// <returns></returns>
        public static T CreateAssetProjectWindow <T>(string filename) where T : ScriptableObject
        {
            var asset = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(asset, filename + ".asset");
            return(asset);
        }
Пример #5
0
 public static LocalisationSettings Create()
 {
     current = CreateInstance <LocalisationSettings>();
     ProjectWindowUtil.CreateAsset(current, "Assets/LocalisationSettings.asset");
     AssetDatabase.SaveAssets();
     return(current);
 }
Пример #6
0
    static void CreatePresetFromOpenScenes()
    {
        var multi = CreateInstance <MultiScene>();

        multi.name = "New Multi-Scene";

        var activeScene = EditorSceneManager.GetActiveScene();
        var sceneCount  = EditorSceneManager.sceneCount;

        for (int i = 0; i < sceneCount; i++)
        {
            var scene = EditorSceneManager.GetSceneAt(i);

            var sceneAsset = AssetDatabase.LoadAssetAtPath <SceneAsset>(scene.path);
            if (activeScene == scene)
            {
                multi.activeScene = sceneAsset;
            }

            multi.sceneAssets.Add(new MultiScene.SceneInfo(sceneAsset, scene.isLoaded));
        }

        var directory   = AssetDatabase.GetAssetPath(Selection.activeObject.GetInstanceID());
        var isDirectory = Directory.Exists(directory);

        if (!isDirectory)
        {
            directory = Path.GetDirectoryName(directory);
        }

        ProjectWindowUtil.CreateAsset(multi, string.Format("{0}/{1}.asset", directory, multi.name));
    }
        private static void CreateScriptableObject <T>(string dir) where T : ScriptableObject
        {
            var obj = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(obj, GetCreateScriptableObjectPath <T>(dir));
            AssetDatabase.Refresh();
        }
Пример #8
0
        public static void CreateSwatch()
        {
            Swatch asset = ScriptableObject.CreateInstance <Swatch>();

            ProjectWindowUtil.CreateAsset(asset, "New Swatch.asset");
            AssetDatabase.SaveAssets();
        }
Пример #9
0
        //Helper function for creating all the ScriptableObject assets we'll need
        public static ScriptableObject CreateAsset <T>(string assetName) where T : ScriptableObject
        {
            var asset = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(asset, assetName + " " + typeof(T).Name + ".asset");
            return(asset);
        }
Пример #10
0
        private void RecordSelectedInformation()
        {
            if (m_TreeView == null || m_TreeView.selected.Count == 0)
            {
                return;
            }
            var psdLayers = m_TreeView.selected.ConvertAll(x => x.layer as IPsdLayer).ToArray();

            if (exporter == null)
            {
                exporter = ScriptableObject.CreateInstance <Exporter>();
            }
            exporter.ruleObj = ruleObj;
            exporter.name    = "exporter" + System.DateTime.UtcNow.ToFileTimeUtc();
            ProjectWindowUtil.CreateAsset(exporter, exporter.name + ".asset");
            EditorUtility.SetDirty(exporter);

            ExportUtility.InitPsdExportEnvrioment(exporter, new Vector2(psd.Width, psd.Height));
            var rootNode = new GroupNode(new Rect(Vector2.zero, exporter.ruleObj.defultUISize), 0, -1);

            rootNode.displayName = exporter.name;

            var groupDatas = ExportUtility.CreatePictures(psdLayers, new Vector2(psd.Width, psd.Height), exporter.ruleObj.defultUISize, exporter.ruleObj.forceSprite);

            if (groupDatas != null)
            {
                foreach (var groupData in groupDatas)
                {
                    rootNode.AddChild(groupData);
                    ExportUtility.ChargeTextures(exporter, groupData);
                }
            }
            TreeViewUtility.TreeToList <GroupNode>(rootNode, exporter.groups, true);
            EditorUtility.SetDirty(exporter);
        }
Пример #11
0
        public static void CreateNewScriptObjectToProp <T>(UnityAction <T> onCreate) where T : ScriptableObject
        {
            var instence = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(instence, typeof(T).ToString() + ".asset");
            EditorApplication.update = () =>
            {
                if (instence == null)
                {
                    EditorApplication.update = null;
                }
                else
                {
                    var path = AssetDatabase.GetAssetPath(instence);
                    if (!string.IsNullOrEmpty(path))
                    {
                        var obj = AssetDatabase.LoadAssetAtPath <T>(path);
                        if (onCreate != null)
                        {
                            onCreate(obj);
                        }
                        EditorApplication.update = null;
                    }
                }
            };
        }
Пример #12
0
        public static void Create()
        {
            var          assetPath = "Assets/Scripts/Enemy01/ScriptableObjects/Enemy01Route.asset";
            Enemy01Route asset     = ScriptableObject.CreateInstance <Enemy01Route>();

            ProjectWindowUtil.CreateAsset(asset, assetPath);
        }
Пример #13
0
        /// <summary>
        /// メニューの`Assets/Create/`内の項目を選んだ時と同じ結果になるアセット生成処理。
        /// </summary>
        /// <remarks>
        /// このメソッドでアセット生成を行った場合、
        /// - アセット生成時にユーザーが選択していたフォルダ、もしくは選択していたアセットを含むフォルダ内にアセットが生成されます。
        /// - また、アセット生成後に生成アセットにフォーカスが移り、リネーム処理が始まります。
        /// - リネーム処理中にEscキーを押すことで生成をキャンセルする事が出来ます。
        /// </remarks>
        /// <param name="instance">Assetを生成するインスタンス。</param>
        /// <param name="defaultAssetName">Assetの基本名。既存のアセットとパスが重複する場合は連番が振られます。</param>
        public static void CreateAssetInteractivity(UnityEngine.Object instance, string defaultAssetName)
        {
            string targetFolder;

            if (Selection.assetGUIDs.Length > 0)
            {
                var selectedAssetGUID = Selection.assetGUIDs.Last();
                var selectedAssetPath = AssetDatabase.GUIDToAssetPath(selectedAssetGUID);

                if (AssetDatabase.IsValidFolder(selectedAssetPath))
                {
                    targetFolder = selectedAssetPath;
                }
                else
                {
                    targetFolder = System.IO.Path.GetDirectoryName(selectedAssetPath);
                }
            }
            else
            {
                targetFolder = "Assets";
            }

            var path = AssetDatabase.GenerateUniqueAssetPath(targetFolder + "/" + defaultAssetName);

            ProjectWindowUtil.CreateAsset(instance, path);
        }
Пример #14
0
        public static T CreateGraph <T>(string directory, string fileName) where T : PWGraph
        {
            //generate the file path
            string path = directory + "/" + fileName;

            //Create the directory resource if not exists
            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }

            //uniquify path
            path = AssetDatabase.GenerateUniqueAssetPath(path);

            //Create the graph, this will call OnEnable too but since the graph is not initialized this will do nothing.
            T mg = ScriptableObject.CreateInstance <T>();

            //Create the asset file and let the user rename it
            ProjectWindowUtil.CreateAsset(mg, path);

            //save and refresh Project view
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            //focus the project window
            EditorUtility.FocusProjectWindow();

            //focus the asset file
            Selection.activeObject = mg;

            return(mg);
        }
Пример #15
0
        static void CreateTemp()
        {
            var exporter = ScriptableObject.CreateInstance <Data.Exporter>();

            exporter.psdFile = "";
            ProjectWindowUtil.CreateAsset(exporter, "exporter.asset");
        }
Пример #16
0
        protected override void OnDrawProperty(SerializedProperty property)
        {
            if (property.propertyPath == "rule")
            {
                using (var hor = new EditorGUILayout.HorizontalScope())
                {
                    EditorGUILayout.PropertyField(rule_prop, new GUIContent("规   则"));
                    if (GUILayout.Button("new", EditorStyles.miniButtonRight, GUILayout.Width(40)))
                    {
                        var options = Array.ConvertAll(supportRules, x => new GUIContent(x.FullName));
                        var rect    = new Rect(Event.current.mousePosition, Vector2.zero);
                        EditorUtility.DisplayCustomMenu(rect, options, -1, (x, y, id) => {
                            var type     = supportRules[id];
                            var instence = ScriptableObject.CreateInstance(type);
                            ProjectWindowUtil.CreateAsset(instence, string.Format("new {0}.asset", type.Name));

                            ActionGUIUtil.DelyAcceptObject(instence, (prefab) =>
                            {
                                rule_prop = new SerializedObject(target).FindProperty("rule");
                                rule_prop.objectReferenceValue = prefab;
                                rule_prop.serializedObject.ApplyModifiedProperties();
                            });
                        }, null);
                    }
                }
            }
            else
            {
                base.OnDrawProperty(property);
            }
        }
Пример #17
0
        public static void Create(MenuCommand menuCommand)
        {
            var mesh = menuCommand.context as Mesh;

            if (mesh != null)
            {
                var path = AssetDatabase.GetAssetPath(mesh);

                if (string.IsNullOrEmpty(path) == false)
                {
                    path = System.IO.Path.GetDirectoryName(path);
                }
                else
                {
                    path = "Assets";
                }

                path += "/Seam Fixer (" + mesh.name + ").asset";

                var instance = CreateInstance <P3dSeamFixer>();

                instance.source = mesh;

                ProjectWindowUtil.CreateAsset(instance, path);
            }
        }
        private void OnWizardCreate()
        {
            if (audioClip.channels > 2)
            {
                Debug.LogError("Currently supports only 1ch or 2ch audio.");
                return;
            }

            var data = new float[audioClip.samples * audioClip.channels];

            audioClip.GetData(data, 0);

            var width   = Mathf.CeilToInt(Mathf.Sqrt(audioClip.samples));
            var height  = width;
            var texture = new Texture2D(width, height, TextureFormat.RGFloat, false, true);
            var colors  = new Color[width * height];

            if (audioClip.channels == 1)
            {
                for (int i = 0; i < audioClip.samples; i++)
                {
                    colors[i] = new Color((data[i] + 1.0f) / 2.0f, (data[i] + 1.0f) / 2.0f, 0);
                }
            }
            else
            {
                for (int i = 0; i < audioClip.samples; i++)
                {
                    colors[i] = new Color((data[i * 2] + 1.0f) / 2.0f, (data[i * 2 + 1] + 1.0f) / 2.0f, 0);
                }
            }

            texture.SetPixels(colors);
            ProjectWindowUtil.CreateAsset(texture, audioClip.name + ".asset");
        }
        static void CreateTransformJitterAssetInstance()
        {
            var asset = CreateInstance <TransformJitterAsset>();

            ProjectWindowUtil.CreateAsset(asset, "New TransformJitterAsset.asset");
            AssetDatabase.Refresh();
        }
Пример #20
0
        private static void Create()
        {
            var name  = Selection.activeObject.name;
            var asset = ScriptableObject.CreateInstance(name);

            ProjectWindowUtil.CreateAsset(asset, name + ".asset");
        }
Пример #21
0
    private static void CreatePresetFromOpenScenes()
    {
        MultiScene multi = CreateInstance <MultiScene>();

        multi.name = "New Multi-Scene";

        Scene activeScene = SceneManager.GetActiveScene();
        int   sceneCount  = SceneManager.sceneCount;

        for (int i = 0; i < sceneCount; i++)
        {
            Scene scene = SceneManager.GetSceneAt(i);

            SceneAsset sceneAsset = AssetDatabase.LoadAssetAtPath <SceneAsset>(scene.path);

            if (activeScene == scene)
            {
                multi.activeScene = sceneAsset;
            }

            multi.sceneAssets.Add(new MultiScene.SceneInfo(sceneAsset, scene.isLoaded));
        }

        string directory   = AssetDatabase.GetAssetPath(Selection.activeObject.GetInstanceID());
        bool   isDirectory = Directory.Exists(directory);

        if (!isDirectory)
        {
            directory = Path.GetDirectoryName(directory);
        }

        ProjectWindowUtil.CreateAsset(multi, $"{directory}/{multi.name}.asset");
    }
Пример #22
0
        void CreateMaterial()
        {
            var material = new Material(shader_.objectReferenceValue as Shader);
            var path     = string.Format("{0}/{1}.mat", GetOutputDirPath(), GetShaderName());

            ProjectWindowUtil.CreateAsset(material, path);
        }
Пример #23
0
        static ScriptableObject InternalCreateAsset(Type type, string name, bool allowUserRename)
        {
            var asset = ScriptableObject.CreateInstance(type);

            string path = AssetDatabase.GetAssetPath(Selection.activeObject);

            if (string.IsNullOrEmpty(path))
            {
                path = "Assets";
            }
            else if (!string.IsNullOrEmpty(Path.GetExtension(path)))
            {
                path = path.Replace(Path.GetFileName(AssetDatabase.GetAssetPath(Selection.activeObject)), string.Empty);
            }

            if (string.IsNullOrEmpty(name) || name.Trim().Length < 1)
            {
                name = "New " + AsSpacedCamelCase(type.Name);
            }

            string pathName = AssetDatabase.GenerateUniqueAssetPath(string.Format("{0}/{1}.asset", path, name));

            if (allowUserRename)
            {
                ProjectWindowUtil.CreateAsset(asset, pathName);
            }
            else
            {
                AssetDatabase.CreateAsset(asset, pathName);
            }

            return(asset);
        }
Пример #24
0
        public static RuleObject CreateRuleObject()
        {
            var ruleObj = ScriptableObject.CreateInstance <RuleObject>();

            ProjectWindowUtil.CreateAsset(ruleObj, "new rule.asset");
            return(ruleObj);
        }
Пример #25
0
 private void DrawElementGroup()
 {
     if (elementGroup_prop.objectReferenceValue == null)
     {
         if (GUILayout.Button("create new element group"))
         {
             var group = ScriptableObject.CreateInstance <ElementGroup>();
             ProjectWindowUtil.CreateAsset(group, "new element_group.asset");
             ActionGUIUtil.DelyAcceptObject(group, item =>
             {
                 elementGroup_prop = new SerializedObject(target).FindProperty("elementGroup");
                 elementGroup_prop.objectReferenceValue = item;
                 elementGroup_prop.serializedObject.ApplyModifiedProperties();
             });
         }
     }
     else
     {
         if (elementGroupDrawer == null)
         {
             Editor editor = null;
             Editor.CreateCachedEditor(elementGroup_prop.objectReferenceValue, typeof(ElementGroupDrawer), ref editor);
             elementGroupDrawer            = editor as ElementGroupDrawer;
             elementGroupDrawer.showScript = false;
         }
         elementGroupDrawer.OnInspectorGUI();
     }
 }
    void CreateInstanceBytype(Type instancetype)
    {
        var inst = CreateInstance(instancetype);
        var path = CurrentSelectionFolderPath() + "/" + instancetype.Name + ".asset";

        ProjectWindowUtil.CreateAsset(inst, path);
    }
 public override Model.NodeGraphObj CreateNodeGraphObject()
 {
     Model.NodeGraphObj graph = ScriptableObject.CreateInstance <T>();
     graph.ControllerType = this.GetType().FullName;
     ProjectWindowUtil.CreateAsset(graph, string.Format("new {0}.asset", graph.GetType().Name));
     return(graph);
 }
Пример #28
0
        public static T CreateAndReturnAsset <T>() where T : ScriptableObject
        {
            var asset = ScriptableObject.CreateInstance <T>();

            ProjectWindowUtil.CreateAsset(asset, "New " + typeof(T).Name + ".asset");
            return(asset);
        }
Пример #29
0
        public static ScriptableObject CreateAsset(Type type)
        {
            var asset = ScriptableObject.CreateInstance(type);

            ProjectWindowUtil.CreateAsset(asset, string.Format("{0}.asset", type.Name));
            return(asset);
        }
        public static void CreateUITKTextSettingsAsset()
        {
            // Create new TextSettings asset
            PanelTextSettings textSettings = ScriptableObject.CreateInstance <PanelTextSettings>();

            ProjectWindowUtil.CreateAsset(textSettings, "UITK Text Settings.asset");
        }