Folder Layout of Noesis Unity Package
Posted: 30 Mar 2013, 18:41
When I first tried Noesis, I added it to an existing project - and the current folder layout you're using for the plugin really gave me some trouble with that. Currently, you have 5 top level folders, 3 of which are specific to NoesisGUI and the other two being the "Plugins" and "StreamingAssets" folder. I think StreamingAssets is already perfect the way it is 
Since NoesisGUI is a "plugin", I'd say that most of this stuff should go into Plugins - but with a subfolder (because in most projects, there will already be quite a bit of stuff in Plugins and it's not so nice to mix this).
One possibility would be having
There's one tricky thing with that: NoesisGUI has a dependency on NoesisRegisterClasses - and NoesisRegisterClasses has a dependency on TicTacToe. This also means that if one deletes the examples, compilation will break ... so that probably has to be fixed anyways.
Also, there's a little fix in the code needed for the DLLs to work properly in their new location: NoesisKernel.GetLibraryDirectory() would have:
(instead of just "Plugins")
With that fix, it does work in the editor - but not when doing a standalone build. I'm not sure why that fails but probably that can be fixed somehow
There's one very important thing you need to keep in mind: When people update your package, even when your package has a new folder layout, this won't change the layout people have in their project. So that's a change you should definitely do before you release - otherwise, you'll be kind of locked into a layout that quite a few people will be very unhappy with.
Some asset store vendors handle this by saying "when you upgrade, delete my package, then re-import" - which works fine if your package is just a single folder (like with NGUI, for instance). But if you're package spreads into various locations into your customers' projects, this will most likely become too complicated for most people.
The contents from Scripts/Editor might best be located in Editor / NoesisGUI or Editor / Noesis (this should probably be consistent - since the product is called NoesisGUI, I guess that would be a better name than Noesis).
The folder "NoesisGUI" could probably be called "NoesisGUI-Examples" and the folder "Scenes" could go right below that, like:
I'm sorry for giving this kind of feedback this late in the process - but I just arrived in the beta a very short time ago and to actually play with it, I needed to install Bootcamp 
Since NoesisGUI is a "plugin", I'd say that most of this stuff should go into Plugins - but with a subfolder (because in most projects, there will already be quite a bit of stuff in Plugins and it's not so nice to mix this).
One possibility would be having
Code: Select all
Plugins
- Noesis
+ Folder DLLs (contains all the DLLs, manifest and yes files)
+ Folder "Kernel" (or some better name for NoesisKernel*, NoesisKeyCodes, NoesisLibrary and so on)
+ Folder Proxies
+ File NoesisGUI.cs
- Android - not sure if this can't also go below Noesis (would be preferable IMHO)
Also, there's a little fix in the code needed for the DLLs to work properly in their new location: NoesisKernel.GetLibraryDirectory() would have:
Code: Select all
return System.IO.Path.Combine(UnityEngine.Application.dataPath, "Plugins/Noesis/DLLs");With that fix, it does work in the editor - but not when doing a standalone build. I'm not sure why that fails but probably that can be fixed somehow
There's one very important thing you need to keep in mind: When people update your package, even when your package has a new folder layout, this won't change the layout people have in their project. So that's a change you should definitely do before you release - otherwise, you'll be kind of locked into a layout that quite a few people will be very unhappy with.
Some asset store vendors handle this by saying "when you upgrade, delete my package, then re-import" - which works fine if your package is just a single folder (like with NGUI, for instance). But if you're package spreads into various locations into your customers' projects, this will most likely become too complicated for most people.
The contents from Scripts/Editor might best be located in Editor / NoesisGUI or Editor / Noesis (this should probably be consistent - since the product is called NoesisGUI, I guess that would be a better name than Noesis).
Code: Select all
Editor
- NoesisGUI
+ NoesisBuildToolKernel
+ ...Code: Select all
NoesisGUI-Examples
- Demos
- Gui
- Scenes
+ MasterMind
+ ...