immersivecognition / unity-experiment-framework

UXF - Framework for creating human behaviour experiments in Unity
https://immersivecognition.github.io/unity-experiment-framework/
MIT License
214 stars 41 forks source link

Feature Request: UXF Access and Update via Unity's Package Manager #84

Open A-Ivan opened 2 years ago

A-Ivan commented 2 years ago

Hi Jack.

First of all, this is a great framework.

It would be great if UXF would be accessible via Unity's package manager, this will make it easier to add it to a project and to make sure it is at the latest version without having to download and manage package versions via GitHub.

For instance, see bmlTUX's implementation: https://biomotionlab.github.io/TUX/docs/Installation#unity-20201-and-later-recommended

Instructions on how to create a custom Unity package and have it accessible via the package manager: https://blog.devgenius.io/creating-custom-packages-for-use-in-unity-7dfbaa49e4b4

jackbrookes commented 2 years ago

Thanks! I agree, this has been on my to-do list for a while. I will see if I get time soon.

A-Ivan commented 2 years ago

Great. I think this would be helpful to have, it will make the installation and update process a bit easier.

thefirstfloor commented 2 years ago

So in researching and splitting our project up into packages, I ran into some issues with UXF not being ready to be part of a package.

Main issue is not having asmdef files to determine which namespace can access which other namespaces. UXF uses a few external libraries / tools with different namespaces. Also all scripts, runtime and editor, are in the same folder tree.

I've rearranged the folder structure in order to make our package (which includes UXF) usable as GIT URL reference in Unity's package manager. All Editor and Runtime scripts needed to be separated.

In short, this is the basic package layout (Unity's guidelines): Runtime/ Editor/ Tests/ Samples/

Which I now rearranged for UXF files with according asmdef files as:

Editor/BasteRainGames.Editor/BasteRainGames.editor.asmdef -> referencing BasteRainGames.asmdef
Editor/SubjectNerd.editor/SubjectNerd.editor.asmdef -> referencing SubjectNerd.asmdef
Editor/UXF.editor/UXF.editor.asmdef -> referencing UXF.asmdef, BasteRainGames.editor.asmdef, SubjectNerd.editor.asmdef 

Runtime/UXF/Scripts/Etc/BasteRainGames/BasteRainGames.asmdef
Runtime/UXF/Scripts/Etc/SubjectNerd.ReorderableInspector/SubjectNerd.asmdef
Runtime/UXF/uxf.asmdef -> referencing BasteRainGames.editor.asmdef, SubjectNerd.editor.asmdef, BasteRainGames.asmdef, SubjectNerd.asmdef

This seems to work up till now. I've deleted the Tests folder, just for convenience. So takes a bit of fiddling but definitely doable!

jackbrookes commented 2 years ago

@thefirstfloor thank you! useful info. Still haven't had time for this yet, but hopefully will get there eventually.

ahmed-shariff commented 2 years ago

The restructure is not entirely necessary, see the above PR (#137). Though it creates copious amounts of meta files for non-essential files/folders. I have no idea how to work around that.