/// <summary> /// 资产创建预处理 /// </summary> /// <param name="ba"></param> /// <returns></returns> public static bool ProcessCreate(BaseAsset ba) { if (ba == null || ba.Resource == null || ba.Resource.Content == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : invalid parameter"); return(false); } switch (ba.BaseData.Type) { case AssetType.UIForm: { UIFormAsset ast = ba as UIFormAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : type is not object - {0}", ba.BaseData.Name); return(false); } if (!InstantiateAsset(ast)) { return(false); } //逻辑处理 ast.OnFormAssetCreate(); } break; case AssetType.Model: { ModelAsset ast = ba as ModelAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : type is not model - {0}", ba.BaseData.Name); return(false); } if (!InstantiateAsset(ast)) { return(false); } ast.Render = ast.RootGo.ExtGetComponentsInChildren <Renderer>(true); ast.AnimationCpt = ast.RootGo.ExtGetComponentInChildren <Animation>(); ast.AnimatorCtrl = ast.RootGo.ExtGetComponentInChildren <Animator>(); } break; case AssetType.UI: { UIAsset ast = ba as UIAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : type is not uiasset - {0}", ba.BaseData.Name); return(false); } if (!InstantiateAsset(ba)) { return(false); } ast.FormCom = ast.RootGo.ExtGetComponent <UIForm>(); ast.PLinkCom = ast.RootGo.ExtGetComponent <PrefabLink>(); } break; //基础实例 case AssetType.Instantiate: { if (!InstantiateAsset(ba)) { return(false); } } break; case AssetType.Audio: { AudioAsset ast = ba as AudioAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : type is not audioclip - {0}", ba.BaseData.Name); return(false); } ast.Clip = ba.Resource.Content as AudioClip; if (ast.Clip == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : resource is not audioclip - {0}", ba.BaseData.Name); return(false); } } break; case AssetType.Sprite: { SpriteAsset ast = ba as SpriteAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : type is not SpriteAsset - {0}", ba.BaseData.Name); return(false); } #if UNITY_EDITOR || !USE_PACK_RES Texture2D tt = ba.Resource.Content as Texture2D; ast.SpriteObj = Sprite.Create(tt, new Rect(0, 0, tt.width, tt.height), new Vector2(0.5f, 0.5f)); #else Sprite ss = ba.Resource.Content as Sprite; if (ss == null) { JW.Common.Log.LogD("SpriteAsset Load From AB Is Texture2D Type"); Texture2D tt1 = ba.Resource.Content as Texture2D; ast.SpriteObj = Sprite.Create(tt1, new Rect(0, 0, tt1.width, tt1.height), new Vector2(0.5f, 0.5f)); } else { ast.SpriteObj = ss; } #endif if (ast.SpriteObj == null) { JW.Common.Log.LogE("AssetProcessor.ProcessCreate : resource is not Sprite - {0}", ba.BaseData.Name); return(false); } } break; } return(true); }
/// <summary> /// 处理销毁 /// </summary> /// <param name="ba"></param> /// <returns></returns> public static bool ProcessDestroy(BaseAsset ba) { if (ba == null) { JW.Common.Log.LogE("AssetProcessor.ProcessDestroy : invalid parameter"); return(false); } switch (ba.BaseData.Type) { case AssetType.UIForm: { UIFormAsset ast = ba as UIFormAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessDestroy : type is not object - {0}", ba.BaseData.Name); return(false); } ast.OnFormAssetDestroy(); DestroyAsset(ast); } break; case AssetType.Model: { ModelAsset ast = ba as ModelAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessDestroy : type is not model - {0}", ba.BaseData.Name); return(false); } ast.AnimationCpt = null; ast.AnimatorCtrl = null; DestroyAsset(ast); } break; case AssetType.UI: { UIAsset ast = ba as UIAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessDestroy : type is not ui - {0}", ba.BaseData.Name); return(false); } ast.FormCom = null; ast.PLinkCom = null; DestroyAsset(ast); } break; case AssetType.Instantiate: { DestroyAsset(ba); } break; case AssetType.Audio: { AudioAsset ast = ba as AudioAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessDestroy : type is not audio - {0}", ba.BaseData.Name); return(false); } ast.Clip = null; } break; case AssetType.Sprite: { SpriteAsset ast = ba as SpriteAsset; if (ast == null) { JW.Common.Log.LogE("AssetProcessor.ProcessDestroy : type is not SpriteAsset - {0}", ba.BaseData.Name); return(false); } ast.SpriteObj = null; } break; } return(true); }