We have a case we are looking at the Addressable system to solve for.
In short we want player’s to be able to bring in new content they made with the Unity engine.
I know this sort of use case gets asked a lot but haven’t found the answer to this question.
How do we load an asset from a specific “mod” where we cannot assure the name of the asset is unique but can assue the name of the mod is.
So here is the use case
As a modder I need to be able to make new content for the app that can be loaded at run time and not conflict with other assets
As a developer I have created the tools to insure that the resulting packages get a unique name based on a GUID system however the indavidual assets could have the same name. One key part is the “package manifest” object we have created, this is a common scriptable object that we look for in the package and load up to know what content is in the package and how its meant to be used in the app. We intend to insistt that this object always has the same name e.g. Package Payload so
var result = Addressables.LoadAssetAsync<PackagePayloadReference>("Package Payload");
That would load the object we desire however if the user has loaded multiple mods they all have that same name so I assume the first one loaded is what would get pulled and that is not correct.
How do we insure we are loading the desired Package Payload e.g.
var result = Addressables.LoadAssetAsync<PackagePayloadReference>("[modId]/Package Payload");
or
IResourceLocator modLocator = //load this package;
var result = modLocator.LoadAssetAsync<PackagePayloadReference>("Package Payload");
TL;DR
How can I load an asset from a specific addressable package/resource locator where many loaded packages will have an asset by that same name.