Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
1
Question by Estecka · May 07, 2017 at 12:32 AM · scriptableobjectcontextmenu

CreateAssetMenu Attribute: multiple sub-menu ?

Just learning how to use scriptableObjects. At this point I have an entry in the Create menu that lets me create new assets of this type :

     [CreateAssetMenu(fileName = "New Carousel", menuName = "Sprite Carousel/Empty")]
     public class Carousel : ScriptableObject{
     /*somecode*/
     }

alt text

As you can maybe tell, I am willing to create multiple sub-entries in the "Sprite Carousel" menu, which would each create a different pre-configurated asset.

My problem is: I don't know how to create multiple sub-entries (using the CreateAssetMenu attribute multiple times throws an error), and I don't know how I would make each entry generate a different preconfigure the asset in a specific way.

untitled.png (8.5 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Estecka · May 07, 2017 at 03:48 PM

Turns out this attribute is not the tool you want to use to create advanced sub-menus. This is just a quick-hand to get a quick integration.

What you'll want to do is create an editor class that'll contain a method for each sub-entry, and give them the MenuItem attribute.

 using UnityEngine;
 using UnityEditor;
 
 
 static class CarouselContextMenu{
     [MenuItem("Assets/Create/Sprite Carousel/8-way")]
     static void eightway(){
         var asset = ScriptableObject.CreateInstance<Carousel> ();

         /*code to preconfigure your asset*/
         
         var path = AssetDatabase.GetAssetPath (Selection.activeObject);
         path +="/My New Carousel.asset";
         
         ProjectWindowUtil.CreateAsset (asset, path);
     }
 }
 

ScriptableObject.CreateInstance<T>() must be used instead of new T() to instantiate a sciptable object.

AssetDatabase.GetAssetPath (Selection.activeObject) returns the path where the context menu was invoked.

ProjectWindowUtil.CreateAsset(asset, path) will effectively spawn the asset in the project folders. You don't want to use AssetDataBase.CreateAsset() as this one will overwrite files and folder without prompting...

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

101 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Does loading a ScriptableObject on runtime and modifying it affect the ScriptableObject in file? 1 Answer

Scripting Movement Fails for Instantiated Prefab 2 Answers

ScriptableObject not saving to Asset properly 0 Answers

Attaching method to scriptableobject 1 Answer

Can I instantiate an already created ScriptableObject? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges