Addressables are here!

I’m having the same problem… Have you been able to find out what’s wrong?

I’m not sure.
I thought it might locate the asset too slow on Server?But on AWS or GCP still slowly so I think it’s unity’s problem.
LZ4 and LZMA compress format possible casue the issue,you can try no compreess,LZ4 and LZMA to test.
Whatever I tried path or label still too slow!
If the issue is the UnityWebRequest cause,I can’t do anything…
Maybe try System.WebClient to download asset…
I hope someone like Unity Technologies can help us.
This problem cause me can’t use AAS in my company project.:frowning:

Hello, Everyone
I added the addressable later in the game development and for some reasons I cant get it working properly with the sliced sprites. In not sliced sprites it works normally, but in sliced sprites it cant recognize the sliced object and gives reference to the hole Texture itself. What can be the problem be?
Thank you in Advance

Sorry for bumping, but i want some tips or best practices for starting with addressables in mobile :wink:

Any tip on Scriptable Objects and Addressables?

Our game is based on SO to communicate between systems, but with addressables, it seems that the SO loses its contents.

Scriptable Objects function the same as GameObjects. I use them with addressables without issue.

Problem with using RemoteLoading for Addressables (Works in Editor but not in build)
Issue:
Exception encountered in operation Dependencies: Invalid path in AssetBundleProvider: ‘D:/Work/Projects/Unity/AddressableSystemTest/Builds/WinBuild4/AddressableSystemTest_Data/StreamingAssets/aa/StandaloneWindows/defaultlocalgroup_unitybuiltinshaders_240b781245634e4879740700defc2878.bundle’.
UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object[ ])
UnityEngine.Logger:LogFormat(LogType, String, Object[ ])
UnityEngine.Debug:LogErrorFormat(String, Object[ ])

My goal is to load new assets from server into my scene.
I have a script called loader that does Addressables.LoadAssetAsync(“robot”).

I have set up the RemoteLoadPath to point to my S3 and RemoteBuildPath as default.

Steps I followed were:

  1. Download Robot-Kyle asset
  2. Move it into Addressable group while having remote profile active.
  3. Changed address as robot
  4. Build the Script
  5. Build the application
  6. Copy paste contents from /ServerData/StandalonWindows into S3 bucket with public flag
  7. Runs in Editor. Works in build
    8.Now I downloaded a new asset. Added it to the group.
  8. renamed old one as soemthing else and renamed New Asset as “robot”
  9. Build Addressables using UpdateFromPreviousBuild
  10. repeat step 6
  11. Run in Editor. Works
  12. Run the build. Error I pasted above is thrown.
  13. Did a ton of research no valid answer that works

Hi Everyone,

As i am going through Addressable assets Implementation from all the Videos i found following steps:
1.Download addressable package.
2.Create prefab which has to be marked as Addressable. Then mark is as Addressable asset and Build it to addressable local path / Cloud path.
3.Load it with the Asyc method provided [Here the prefab stays in the Project itself].

What i tried to implement.

  1. Created a Unity Project Say “Project 01” and i build few addressable assets.
  2. Loaded addressable assets from local as well as Cloud path But Here the prefabs are present in the project itself.
  3. I was able to load the assets from local as well as cloud path.
  4. Next i have created another empty unity project “Project 02” with addressable asset settings.
  5. In “Project 02” i have given path for Cloud location to fetch it with the same scripts as “Project 01”.
  6. But i not able to do so.

Please let me know what are the steps need to be followed to implement following Use case.

Use case.

  1. I want to create 2 unity project “Project 01” & “Project 02” environments where one would be Development environment from which i would like to build and upload Addressable Assets to Cloud.
  2. Another project would be Production ready where i will fetch all the Addressable Assets created from Project 01 to Project 02 with the same cloud path where Addressable Assets are uploaded.

Thanks.

Hello, I am trying to create a group template with script completely.

And now I could create a template and assign the build / load paths,
but I have no idea how to assign the ‘Asset Provider’ and ‘AssetBundle Provider’ fields.

Anyone can help ?
Addressable version: 1.8.4

[MenuItem("Marscat/Addressable/Init")]
private static void InitTemplates()
{
    var settings = AddressableAssetSettingsDefaultObject.Settings;
    settings.GroupTemplateObjects.Clear();

    var groupSchemaTypes = new[] {typeof(BundledAssetGroupSchema), typeof(ContentUpdateGroupSchema)};
    settings.CreateAndAddGroupTemplate("PackTemplate", "A description", groupSchemaTypes);

    var newTemplate = settings.GetGroupTemplateObject(0) as AddressableAssetGroupTemplate;
    InitGroupTemplate(newTemplate, "LocalBuildPath", "LocalLoadPath", true, BundlePackingMode.PackTogether);

    AssetDatabase.SaveAssets();

    void InitGroupTemplate(AddressableAssetGroupTemplate template, string buildPath, string loadPath, bool includeInBuild, BundlePackingMode packingMode)
    {
        var bundleSchema = template.GetSchemaByType(typeof(BundledAssetGroupSchema)) as BundledAssetGroupSchema;
        bundleSchema.BuildPath.SetVariableByName(settings, buildPath);

        bundleSchema.LoadPath.SetVariableByName(settings, loadPath);
        bundleSchema.IncludeInBuild = includeInBuild;
        bundleSchema.BundleMode     = packingMode;
        bundleSchema.BundleNaming   = BundledAssetGroupSchema.BundleNamingStyle.NoHash;

        EditorUtility.SetDirty(bundleSchema);
    }
}

I have an issue that whenever i mark the prefabs as addressable and go to new build > default build script afterwards i have to clean the cache and rebuild it if i want my prefabs to be spawned like they appear in the project view. Otherwise, a previous version is spawned.

Hello I am new to Addressables.
I am having a problem getting a AssetReferenceSprite.

I have 1000’s of scriptable objects that reference Sprites.
I am writing a script to populate a new field with the AssetReferenceSprite in it.
I did something similar for my prefabs and it worked great.
But I can’t figure out how to the the AssetReferenceSprite back for the Sprite object.

Here is some code that may help you understand what I am doing.

    void OnWizardCreate()
    {
        UnityEngine.Object[] objects = Resources.LoadAll(path, typeof(ScriptableObject));

        foreach (UnityEngine.Object cd in objects)
        {
            ConditionData data = cd as ConditionData;

            if (data == null)
                continue;

            data.iconReference = data.icon.GetAssetReference() as AssetReferenceSprite;

            EditorUtility.SetDirty(cd);
        }

        AssetDatabase.SaveAssets();

    }
        public static AssetReference GetAssetReference(this Object o)
        {
            string guid = string.Empty;
            long localID = 0;

            bool foundAsset = AssetDatabase.TryGetGUIDAndLocalFileIdentifier(o, out guid, out localID);

            if (foundAsset)
                return AddressableAssetSettingsDefaultObject.Settings.CreateAssetReference(guid);

            return null;
        }

Any help would be great.

Ok I got it working by adding this method to “AddressableAssetSettings”.

        public AssetReferenceSprite CreateAssetReferenceSprite(string guid)
        {
            CreateOrMoveEntry(guid, DefaultGroup);
            return new AssetReferenceSprite(guid);
        }

They may have been a way to get it without adding this method but I could not figure it out.

Addvatage of scene.load async or addressables load?

On a local storage I want to load several different screens with content.

Now my question is, what has the better over a performance ? Scene.load async or addressables loading a Scene?

The loading processing should be as smooth as possible in the background.

Does anyone have experience with?
Thanks!

When you build your bundles using addressable system, the output contains these stuff:

  • a hash file
  • catalogue of your assets (local + remote)
  • remote bundles (but not local)

The problem is: after unity building and releasing in store, when you change a local asset and build using addressable system and put it on server again, the hash of your local in catalogue will change (without having that local bundle on server) and that causes client to update local asset hashes without having the related bundles, as a result not loading those assets.

What is the reason of putting local asset addresses in remote catalogue while you do not have local bundles on remote?

Hello! Are there any way to load prefab with scripts from addressable bundle, if bundle build by another project ? Prefab with mesh and materials load correctly but script is missing. If I copy script to this project and load prefab - all is good.

I noticed that if I create a scene with static GameObjects and I make that scene addressable: Then when I load the scene directly in the editor the static GameObjects are static, but when I load the scene as an addressable asset, the all the static GameObjects are loaded as non-static GameObjects.

Is that per design or a bug?

I was using Addressables 1.16.1

Hi, were you able to figure this out? I am having the same problem.

I think they get instantiated as new objects and loses the reference to the original. For example, if I have 10 UI elements that reference UIColorScriptableObject, when I instantiate those elements they seem to each have a new instance of UIColorScriptableObjects instead of pointing to that original one asset.

This breaks the intended purpose of ColorScriptableObject which is to share data between multiple instances.

Dependencies of Addressable assets are duplicated into the bundle. If you don’t want that to happen, you can explicitly set the dependency (in your case, UIColorScriptableObject) to be Addressable. That way, all Addressable assets that depend on UIColorScriptableObject will refer to the same, Addressable, instance of it.

Although I’d like to add that I’m pretty sure if there are also non-Addressable assets that depend on UIColorScriptableObject, you’ll still get two instances of UIColorScriptableObject, one for Addressable assets, and one for non-Addressable ones.

1 Like

Hi, I am trying to build different addressable groups and it’s important for me to give each group individually a different build path and load path.

I was wondering if Unity allows or can allow access to modifying each groups’ build or load path through code, it’s critical for my game…

Do any of you have any ideas if it’s possible?

does anyone know what happen in addressable when ReleaseInstances is called before InstantiateAsync is complete?