You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已标记为Addressable的Scene实例中获取对应的AssetReference?

问题解答

可以获取对应AssetReference,但Scene实例本身没有直接存储Addressable关联信息,需要结合Addressables的资源目录查询能力实现,以下是完整方案:


实现代码

首先引入必要的命名空间:

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.AddressableAssets;
using System.Linq;

你提供的代码段可以按以下逻辑填写:

Scene activeScene = SceneManager.GetActiveScene();

// 获取AssetReference的实现逻辑
AssetReference activeSceneReference = null;
// 遍历Addressable资源定位器查找当前场景的对应配置
foreach (var locator in Addressables.ResourceLocators)
{
    // 用场景路径作为默认键查找SceneInstance类型资源
    if (locator.Locate(activeScene.path, typeof(SceneInstance), out var locations))
    {
        var targetLoc = locations.FirstOrDefault();
        if (targetLoc != null)
        {
            // 用资源定位的主键构造AssetReference
            activeSceneReference = new AssetReference(targetLoc.PrimaryKey);
            break;
        }
    }
}

注意事项

  • 该方案仅对已标记为Addressable、且对应分组已完成Catalog构建的场景生效
  • 如果你给场景设置了自定义的Addressable地址而非默认路径,可以把查询键activeScene.path替换为activeScene.name尝试匹配
  • 如果需要频繁调用该逻辑,建议缓存查询结果,避免多次遍历定位器产生额外性能消耗

内容的提问来源于stack exchange,提问作者jamesplease

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:12:00