private void ProcessCommonResources(TEntity entity, ICommonResourceComponent res, IUnityAssetManager loadRequestManager) { var time = (int)(MyGameTime.time * 1000); var resourceLength = res.Resources.Length; for (var i = 0; i < resourceLength; i++) { var asset = res.Resources[i]; var actions = GetActions(i); if (asset == null || actions == null) { continue; } if (asset.Status == EAssetLoadStatus.UnLoad) { asset.Status = EAssetLoadStatus.Loading; asset.LastRequestTime = time; loadRequestManager.LoadAssetAsync( new AssetRequestSource(GetEntityKey(entity), res.GetComponentId(), asset.ResIndex, asset.LastRequestTime), asset.AssetInfo, OnLoadSucc, _assetLoadOption); } else if (asset.Status == EAssetLoadStatus.UnInit) { if (actions.CanInit(entity, asset)) { actions.Init(entity, asset); asset.Status = EAssetLoadStatus.Loaded; } } } }
private static AssetStatus LoadResource(ICommonResourceComponent comp, int index, AssetInfo assetInfo, int time, bool forceReload = false) { AssertUtility.Assert(index < comp.Resources.Length); var oldStatus = comp.Resources[index]; if (oldStatus.AssetInfo.Equals(assetInfo) && !forceReload) { return(null); } var newStatus = comp.Resources[index] = ObjectAllocatorHolder <AssetStatus> .Allocate(); newStatus.LastRequestTime = time; newStatus.Status = EAssetLoadStatus.UnLoad; newStatus.Object = null; newStatus.AssetInfo = assetInfo; newStatus.ResIndex = index; return(oldStatus); }
public static AssetStatus UnloadResource(ICommonResourceComponent comp, int index) { AssertUtility.Assert(index < comp.Resources.Length); var oldStatus = comp.Resources[index]; if (oldStatus.Status == EAssetLoadStatus.None) { return(null); } var newStatus = comp.Resources[index] = ObjectAllocatorHolder <AssetStatus> .Allocate(); newStatus.LastRequestTime = 0; newStatus.Status = EAssetLoadStatus.None; newStatus.Object = null; newStatus.AssetInfo = AssetInfo.EmptyInstance; newStatus.ResIndex = index; return(oldStatus); }