I want to create an asset for other developers to use. I have a singleton service (analytics) which I’m using in each scene and many game logic places and I don’t want to add this object to every scene and force other developers to do the same. This service has a few configurable properties which need to be set before it can accept requests like below:
MyCoolAnalytics.Instance.Track("something game event 1");
The issue is the service is not inherited from MonoBehavior so I cannot just drop a scriptable object asset and let a developer configure it. I also don’t want the developers to open the C# file to edit property values, that is a bad UX for an asset.
What is the best way to set my asset up so other developers can have an easy way to configure it after importing (define a few string settings) and the singleton service not inherited from MonoBehavior can read these settings and apply them in runtime?