protected override void LoadSourceDataAsync(Action <IStaticDataDirectorySource <TData> > onLoadSuccess, LoadError onLoadFailed)
        {
            AssetBundleLoadAssetOperation request = AssetBundleManager.LoadAssetAsync(_bundleName, _path, typeof(UnityEngine.Object));

            if (request == null)
            {
                onLoadFailed(new LoadException(string.Format("Failed to load source data at path {0}", _path)));
                return;
            }

            TaskProvider.Instance.RunTask(request, () =>
            {
                Object requestResult = request.GetAsset <UnityEngine.Object>();
                IStaticDataDirectorySource <TData> source = requestResult as IStaticDataDirectorySource <TData>;

                if (source == null)
                {
                    onLoadFailed(new LoadException(string.Format("Failed to cast loaded data source at path '{0}' into source type {1} and data type {2}",
                                                                 _path,
                                                                 typeof(IStaticDataDirectorySource),
                                                                 typeof(TData))));
                }
                else
                {
                    onLoadSuccess(source);
                }
            });
        }
예제 #2
0
    public StaticDataReferenceAttribute(string path, Type filterType)
    {
#if UNITY_EDITOR
        Object requestResult = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(path);
        IStaticDataDirectorySource source = requestResult as IStaticDataDirectorySource;
        IDs = source.GetIDs(filterType);
#endif
    }
        private void PopulateData(IStaticDataDirectorySource <TData> source, ref Dictionary <string, TData> dataLookup)
        {
            dataLookup = new Dictionary <string, TData>();

            foreach (StaticDataEntry <TData> entry in source)
            {
                TData data = entry.Data;

                if (data != null)
                {
                    dataLookup.Add(entry.ID, entry.Data);
                }
            }
        }