A helpful Ink-Knot PropertyDrawer
TL;DR: I've made a struct & propertyDrawer to dynamically create a dropdown menu to pick any knot from your assets folder.
~~~
Hey folks, so got another useful bit of editor code to share, this one is here to deal with a common problem in the project:
- we have a lot of ink knots as our story files are little solo chats with another character
- we need to trigger these knots from multiple places in the project
- and because strings are strings, we want to avoid misspellings
Now the best way to deal with this is to just list a dropdown of all the possible options you can pick... which is actually fairly straightforward!
Previously in the project I already made this little tool to help with testing a story in the story-player scene. So I already had the actual search code ready, next up was making the property drawer itself. A catch I ran into with the drawer though: you kind of need to side-step setting the serialisedProperty directly, instead setting a local string, then setting the string afterwards. (This is because the Menu dropdown is technically happening after `OnGUI(...)` finishes, so you've got some kind of Async thing going on)
~~~
For reference if you want to learn how this was put together, here are the various strands to research:
- Use AssetDatabase.FindAssets to find all assets under a given path
- With that, you've got the GUIDs for each one, so turn those into file paths
- Now you can use File.OpenText with each path to read it line-by-line (This MSDN article covers the basic & provides follow-up links)
- Note the using(...) construct, this is a handy thing that opens, then disposes the StreamReader for you!
- Then, you just read through the .ink text file line-by-line checking for "==" with StartsWith
- This then gets fed into a GenericMenu (which isn't much changed from unity's docs page)
Because this happens in edit-time, I find you can afford to do some proper file-crawls like this, however once this scales up to 100s of ink files you'd want to avoid a crawl every time you click on a dropdown. That's why it uses a static dictionary. There may be other optimisations to add, but this is a first implementation.
Get A Day of Maintenance (Jam Version)
A Day of Maintenance (Jam Version)
A driving fix 'em up crane-operator game for 7DFPS
Status | Released |
Author | BigHandInSky |
Genre | Puzzle |
Tags | 3D, Atmospheric, crane, desert, Driving, fixing, maintenance, Open World, Sci-fi, Singleplayer |
Languages | English |
Accessibility | Color-blind friendly, Subtitles, High-contrast, Interactive tutorial |
More posts
- Site Update Teaser - The Sunken DishJun 07, 2021
- Validating Unity Builds the easier wayMay 15, 2021
- Working on the game's IntroductionApr 20, 2021
- Character TeaserMar 30, 2021
- Improving the Vehicle CameraMar 20, 2021
- Adding world propsFeb 21, 2021
- Things you should know before making a Vehicle in UnityJan 30, 2021
- Useful scripts for Quick 'n good UGUIJan 13, 2021
- A sneak peek at what's comingJan 01, 2021
Leave a comment
Log in with itch.io to leave a comment.