示例#1
0
    /// <summary>
    /// 获取需要新加载的资源配置表 by吴江
    /// </summary>
    /// <param name="_newData">新场景所需要的整体资源</param>
    /// <param name="_oldData">原场景已经有的整体资源</param>
    /// <returns>新场景还需要加载的资源表</returns>
    private SceneConfigData GetNeedLoad(SceneConfigData _newData)
    {
        SceneConfigData needLoadData = SceneConfigData.CreateInstance<SceneConfigData>();


        needLoadData.name = _newData.name;
        needLoadData.instanceID = _newData.instanceID;

        //获取旧场景中不存在的新资源
        foreach (var newData in _newData.textureDataList)
        {
            if (!LoadCache.HasLoaded(newData, AssetType.texture) && !needLoadData.textureDataList.Contains(newData))
            {
                needLoadData.textureDataList.Add(newData);
            }
        }
        foreach (var newData in _newData.shaderDataList)
        {
            if (!LoadCache.HasLoaded(newData, AssetType.shader) && !needLoadData.shaderDataList.Contains(newData))
            {
                needLoadData.shaderDataList.Add(newData);
            }
        }
        foreach (var newData in _newData.materialDataList)
        {
            if (!LoadCache.HasLoaded(newData, AssetType.material) && !needLoadData.materialDataList.Contains(newData))
            {
                needLoadData.materialDataList.Add(newData);
            }
        }
        return needLoadData;
    }
示例#2
0
    public static SceneConfigData MergeNeed(List<SceneConfigData> _data)
    {
        SceneConfigData newdata = SceneConfigData.CreateInstance<SceneConfigData>();
        newdata.Name = string.Empty;
        for (int i = 0; i < _data.Count; i++)
        {
            SceneConfigData item = _data[i];
            for (int j = 0; j < item.textureDataList.Count; j++)
            {
                if (!newdata.textureDataList.Contains(item.textureDataList[j]))
                {
                    newdata.textureDataList.Add(item.textureDataList[j]);
                }
            }
            for (int j = 0; j < item.shaderDataList.Count; j++)
            {
                if (!newdata.shaderDataList.Contains(item.shaderDataList[j]))
                {
                    newdata.shaderDataList.Add(item.shaderDataList[j]);
                }
            }
            for (int j = 0; j < item.materialDataList.Count; j++)
            {
                if (!newdata.materialDataList.Contains(item.materialDataList[j]))
                {
                    newdata.materialDataList.Add(item.materialDataList[j]);
                }
            }
        }
        return newdata;

    }