protected IEnumerator LoadWigetAsync <T>(string path, bool dontDestroyOnLoad, System.Action <T> action) where T : WidgetBase { PrefabResource resource = null; yield return(Global.ResourceMgr.CreateUIResourceAsync(path, ePath.UI, dontDestroyOnLoad, o => { resource = o; })); WidgetBase widget = null; if (resource != null) { widget = ComponentFactory.GetComponent <T>(GameObject.Instantiate(resource.ResourceData) as GameObject, IfNotExist.ReturnNull); } if (widget != null) { InitWidget(path, widget, null); AddWidget(path, widget, dontDestroyOnLoad); } action(widget as T); }
private IResource CreateResource(eResourceType eType, string name, string assetpath, Object objresource, bool isAssetBundle) { IResource resource = null; switch (eType) { //case E_ResourceType.Actor: case eResourceType.UI: case eResourceType.Prefab: case eResourceType.Text: resource = new PrefabResource(objresource, eType, isAssetBundle); break; case eResourceType.Sound: resource = new SoundResource(objresource, isAssetBundle); break; } resource.InitLoad(name, assetpath); Dictionary <int, IResource> dicRes = GetDicResource(eType); if (dicRes.ContainsKey(resource.GetHashCode())) { // LogManager.GetInstance().LogDebug("CreateResource name error" + name); } else { dicRes.Add(resource.GetHashCode(), resource); } return(resource); }
void ReleaseRes() { if (null != tex2d) { GameObject.Destroy(tex2d); tex2d = null; } if (null != snapshotPrefab) { snapshotPrefab.Release(); snapshotPrefab = null; } }
private IResource CreateResource(eResourceType eType, string name, string assetpath, Object objresource, bool isAssetBundle) { IResource resource = null; switch (eType) { //case E_ResourceType.Actor: case eResourceType.UI: case eResourceType.Prefab: resource = new PrefabResource(objresource, eType, isAssetBundle); break; // case E_ResourceType.UnitySprite: // resource = new SpriteResource(objresource); // break; case eResourceType.Script: resource = new ScriptResource(objresource, isAssetBundle); break; case eResourceType.SpriteAsset: SpritePackerAsset spritePackerAsset = (SpritePackerAsset)objresource; resource = new SpriteAssetResource(spritePackerAsset.AllSprites, isAssetBundle); break; case eResourceType.Scriptable: resource = new ScriptableResource(objresource, isAssetBundle); break; case eResourceType.Texture: resource = new TextureResouce(objresource, isAssetBundle); break; case eResourceType.Sound: resource = new SoundResource(objresource, isAssetBundle); break; } resource.InitLoad(name, assetpath); Dictionary <int, IResource> dicRes = GetDicResource(eType); if (dicRes.ContainsKey(resource.GetHashCode())) { // LogManager.GetInstance().LogDebug("CreateResource name error" + name); } else { dicRes.Add(resource.GetHashCode(), resource); } return(resource); }
public void Load() { if (showAllCtrl.selectedIndex == 1) { return; } string path = Paths.SnapshotSave(graphName); if (File.Exists(path)) { byte[] bytes = File.ReadAllBytes(path); if (null == tex2d) { tex2d = new Texture2D(2, 2); } tex2d.LoadImage(bytes); loader.texture = new NTexture(tex2d); } else { if (null == snapshotPrefab) { snapshotPrefab = PrefabLoader.Load(string.Format( "{0}/{1}/{1}_{2}", Paths.Artworks, graphName, Paths.Snapshot)); if (null != snapshotPrefab) { snapshotPrefab.KeepReference(); } } if (null != snapshotPrefab) { var prefabObject = (GameObject)snapshotPrefab.Object; var holder = prefabObject.GetComponent <PuzzleSnapshotHolder>(); if (null != holder && null != holder.texture) { loader.texture = new NTexture(holder.texture); } else { GameLog.LogError("PuzzleSnapshotHolder missing or texture missing: " + graphName); } } } }
public IEnumerator InitNewMarkerGameObject() { PrefabResource res = new PrefabResource(); yield return(ResourceLoader.Instance.load_prefab(UINEWMARKER, res, true)); GameObject obj = res.obj_; obj.name = obj.name.Replace("(Clone)", ""); obj.SetActive(false); obj.transform.SetParent(root.transform, false); obj.transform.localPosition = new Vector3(); obj.transform.localScale = Vector3.one; obj.transform.localRotation = new Quaternion(); mNewMarkerObj = obj; }
private GameObject LoadPrefab(ePath path, string prefabName) { if (string.IsNullOrEmpty(prefabName)) { return(null); } PrefabResource resource = Global.ResourceMgr.CreatePrefabResource(prefabName, path); if (resource != null) { return(resource.ResourceGameObject); } return(null); }
public IEnumerator InitPreviewBackgroundMat() { PrefabResource res = new PrefabResource(); yield return(ResourceLoader.Instance.load_prefab(PreviewTextureBackground, res, true)); GameObject obj = res.obj_; if (obj == null) { Debug.LogError(string.Format("the res {0} does not exist", PreviewTextureBackground)); yield break; } obj.name = obj.name.Replace("(Clone)", ""); obj.SetActive(false); obj.transform.SetParent(root.transform, false); m_previewTextureBackground = obj; }
protected T LoadWiget <T>(string path, bool dontDestroyOnLoad) where T : WidgetBase { PrefabResource resource = Global.ResourceMgr.CreateUIResource(path, ePath.UI, dontDestroyOnLoad); T widget = null; if (resource != null) { widget = ComponentFactory.GetComponent <T>(GameObject.Instantiate(resource.ResourceData) as GameObject, IfNotExist.ReturnNull); } if (widget != null) { InitWidget(path, widget, null); AddWidget(path, widget, dontDestroyOnLoad); } return(widget); }
/// <summary> /// 加载节点的资源,有可能直接从缓存中加载 /// </summary> /// <returns></returns> IEnumerator Load() { QuadTreeSceneManager.Instance.AddListener(this); isLoading = true; if (QuadTreeSceneManager.Instance.TryHitCache(this)) { scenePart.gameObject.SetActive(true); } else { PrefabResource pr = new PrefabResource(); yield return(StartCoroutine(ResourceLoader.Instance.load_prefab(scenePartPath, pr))); pr.obj_.transform.position = Vector3.zero; scenePart = pr.obj_.GetComponent <QuadtreeScenePart>(); QuadTreeSceneManager.Instance.AddToCache(this); } QuadTreeSceneManager.Instance.RemoveListener(this); isLoading = false; }
public IEnumerator InitRedPointGameObject() { PrefabResource res = new PrefabResource(); yield return(ResourceLoader.Instance.load_prefab(UIREDPOINT, res, true)); GameObject obj = res.obj_; obj.name = obj.name.Replace("(Clone)", ""); obj.SetActive(false); obj.transform.SetParent(root.transform, false); obj.transform.localPosition = new Vector3(); obj.transform.localScale = Vector3.one; obj.transform.localRotation = new Quaternion(); mRedPointObj = obj; RectTransform redPoint_rectTransform = mRedPointObj.GetComponent <RectTransform>(); if (redPoint_rectTransform != null) { mRedPointObjSize = redPoint_rectTransform.sizeDelta; } }
//load a prefab from pool, it not found in pool, return null //notice: if you got object by this method, you should call RecyclePrefab() after using it. public IEnumerator LoadPrefab(string assetPath, ObjCachePoolType poolType, string poolKey, ObjectWrapper prefab) { if (poolKey == null) { poolKey = assetPath; } if (!mDicObjPools.ContainsKey(poolType)) { Debug.LogError(string.Format("ObjCachePoolMgr::LoadPrefab pool type {0} is not defined!", poolType)); yield break; } ObjectCachePool dstPool = mDicObjPools[poolType]; //try load from pool GameObject obj = dstPool.try_hit_cache(poolKey) as GameObject; if (obj == null) { PrefabResource pr = new PrefabResource(); yield return(StartCoroutine(ResourceLoader.Instance.load_prefab(string.Format("Assets/Res/{0}.prefab", assetPath), pr))); obj = pr.obj_; if (obj == null) { yield break; } PoolGameObject pg = obj.AddComponent <PoolGameObject>(); pg.poolType = poolType; pg.key = poolKey; } else { obj.transform.SetParent(null, false); obj.SetActive(true); } obj.transform.position = new Vector3(0, -1000, 0); prefab.obj = obj; }
private IEnumerator LoadActorAsysc(ePath path, string prefabName, System.Action <GameObject> action) { if (string.IsNullOrEmpty(prefabName)) { if (action != null) { action(null); } yield break; } PrefabResource prefabResource = null; yield return(Global.ResourceMgr.CreatePrefabResourceAsync(path, prefabName, resource => { if (action != null) { prefabResource = resource; action(prefabResource != null ? resource.ResourceGameObject : null); } })); }
/// <summary> /// 加载指定路径下的特效资源 /// </summary> /// <param name="effect_path"></param> /// <param name="effect_cache_path"></param> /// <param name="bind_node"></param> /// <returns></returns> IEnumerator LoadEffect(string effect_path, string effect_cache_path, string bind_node) { GameObject go = ObjCachePoolMgr.Instance.LoadFromCache(ObjCachePoolType.SFX, effect_cache_path) as GameObject; if (go == null) { PrefabResource ar_prefab = new PrefabResource(); yield return(ResourceLoader.Instance.load_prefab(effect_path, ar_prefab)); if (ar_prefab.obj_ == null) { yield break; } go = ar_prefab.obj_; //将加载的gameobject放入内存池中 PoolGameObject pg = go.AddComponent <PoolGameObject>(); pg.poolType = ObjCachePoolType.SFX; pg.key = effect_cache_path; GameObject.DontDestroyOnLoad(go); } var succ = OnEffectResLoad(go, bind_node); if (!succ) { ObjCachePoolMgr.Instance.RecyclePrefab(go, ObjCachePoolType.SFX, effect_path); } else { // 等待2s之后将特效放回内存池中 yield return(new WaitForSeconds(2.0f)); ObjCachePoolMgr.Instance.RecyclePrefab(go, ObjCachePoolType.SFX, effect_path); } }
/// <summary> /// 设置Prefab协程函数 /// </summary> /// <param name="targetObject"></param> /// <param name="prefabInfo"></param> /// <returns></returns> static private IEnumerator CoSetObjectPrefab(GameObject targetObject, Neptune.NodePrefabInfo prefabInfo, System.Action finishCallback) { PrefabResource prefabRes = new PrefabResource(); string path = "Assets/" + prefabInfo.PrefabFile; yield return(MainGame.HeartBehavior.StartCoroutine(SGameEngine.ResourceLoader.Instance.load_prefab(path, prefabRes))); if (prefabRes == null || prefabRes.obj_ == null) { GameDebug.LogError("Set object prefab " + path + " error, can not load prefab!"); yield break; } if (targetObject != null && prefabInfo != null) { Transform trans = prefabRes.obj_.transform; trans.parent = targetObject.transform; trans.localPosition = prefabInfo.LocalPosition; trans.localScale = prefabInfo.LocalScale; trans.localRotation = prefabInfo.LocalRotation; CollectionObjectBehaviour collectionObjectBehaviour = targetObject.GetComponent <CollectionObjectBehaviour>(); if (collectionObjectBehaviour != null) { collectionObjectBehaviour.OnResLoaded(); } if (finishCallback != null) { finishCallback(); } } else { GameDebug.LogError("Set object prefab " + path + " error, target object is null!"); } }
IEnumerator LoadReflectionPlane(string path, int inst_id, Vector3 pos) { PrefabResource pr = new PrefabResource(); yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_prefab(path, pr))); GameObject obj = pr.obj_; if (obj != null) { SetCurrentObject(inst_id, obj); } m_IsLoadingRes = false; if (m_IsShow) { if (obj != null) { obj.SetActive(true); obj.transform.position = pos; } } }
public IEnumerator InitCachedItems() { PrefabResource res = new PrefabResource(); yield return(ResourceLoader.Instance.load_prefab(UIGOODSITEM, res, true)); GameObject obj = res.obj_; obj.name = obj.name.Replace("(Clone)", ""); UIItemNewSlot.Bind(obj); obj.SetActive(false); cachedItems = new TemplateCache(); cachedItems.Init(obj, "UINewGoodsItem", 0, this.root, 50); obj.transform.SetParent(cachedItems.root.transform, false); obj.transform.localPosition = new Vector3(); obj.transform.localScale = Vector3.one; obj.transform.localRotation = new Quaternion(); cachedItems.AddGameObjects(30); }
/// <summary>Initializes a new instance of the UnityAvatar class</summary> /// <param name="id">Avatar identifier</param> /// <param name="resource">Unity prefab resource</param> /// <param name="states">List of available states</param> /// <param name="defaultState">Default state</param> public UnityAvatar(string id, PrefabResource resource, AvatarState[] states, string defaultState) : base(id, resource, states) { this.GameObject = (GameObject)UnityEngine.Object.Instantiate(this.Prefab.NativeResource); if (UnityAvatar.Parent != null) { this.GameObject.transform.parent = UnityAvatar.Parent; } else { Log.Warning("UnityAvatar.Parent has not been set. All avatars will be created in the root of the scene."); } this.animator = this.GameObject.GetComponent <Animator>(true); this.CurrentState = this.States[defaultState]; if ((this.Collider = this.GameObject.GetComponent <Collider>(true)) != null) { this.Collider.isTrigger = true; } else { Log.Error("Avatar prefab '{0}' missing required Collider component!", resource.Id); } if ((this.rigidbody = this.GameObject.GetComponent <Rigidbody>(true)) != null || (this.rigidbody = this.GameObject.AddComponent <Rigidbody>()) != null) { this.rigidbody.useGravity = false; this.rigidbody.isKinematic = true; } else { Log.Error("Avatar prefab '{0}' missing required Rigidbody component!", resource.Id); } }
public static IEnumerator EnterGame() { // 预加载资源 ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.PreloadResStart, "", false); #if UNITY_EDITOR MikuLuaProfiler.HookLuaSetup.OnStartGame(); #endif // 创建Core物体 mCoreObject = new GameObject("Core"); GameObject.DontDestroyOnLoad(mCoreObject); // 实例化Game Game mGame = Game.GetInstance(); mHeartBehavior = mCoreObject.AddComponent <Heart>(); AssemblyBridge.Instance.TimelinePlayableEmployee = new TimelinePlayableEmployee(); ClientEventMgr.GetInstance(); // 增加各种Component var resource_loader = mCoreObject.AddComponent <ResourceLoader>(); resource_loader.BundleVersion = NewInitSceneLoader.Instance.BundleVersion; resource_loader.ServerBundleInfo = NewInitSceneLoader.Instance.g_server_bundle_info; mCoreObject.AddComponent <ResourceUtilEx> (); ResourceLoader.Instance.init(); mCoreObject.AddComponent <ObjCachePoolMgr>(); // 因为部分表格资源放在bundle资源中,因此要尽早进行加载 yield return(GlobalMono.StartCoroutine(DBTableManager.Instance.Preload())); mCoreObject.AddComponent <ActorManager>(); HttpRequest.Instance = mCoreObject.AddComponent <HttpRequest>(); mCoreObject.AddComponent <QuadTreeSceneManager>(); mCoreObject.AddComponent <PushManager>(); xc.RedPointDataMgr.GetInstance(); //小红点实例化 xc.LockIconDataMgr.GetInstance(); xc.NewMarkerDataMgr.GetInstance(); //New标记 #if !DISABLE_LUA //mCoreObject.AddComponent<LuaClient>().Init(); LuaClient luaClient = mCoreObject.AddComponent <LuaClient>(); yield return(GlobalMono.StartCoroutine(luaClient.InitRoutine())); #endif #if (TEST_HOST && !PERFORMANCE_TEST) || HD_RESOURCE //mCoreObject.AddComponent<DebugFPS>();// 因为gc的问题暂时屏蔽 mDebugUI = mCoreObject.AddComponent <DebugUI>(); mDebugUI.UnsubscribeAllProcessCmd(); mDebugUI.SubscribeProcessCmd(DebugCommand.OnProcessCmd); //测试环境打开DebugWindow,取消仅在编辑器打开的判断 //#if UNITY_EDITOR var window = GameObject.Instantiate(Resources.Load <GameObject>("Debug/DebugWindow")); GameObject.DontDestroyOnLoad(window); debugWindow = window.AddComponent <DebugWindow>(); //#endif #endif CullManager.Instance.Factor = 1.0f; QualitySetting.DeviceAdaptation(); AssetResource ar = new AssetResource(); // 加载混音设置 yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_asset("Assets/Res/Sound/AudioMixer.mixer", typeof(UnityEngine.Object), ar))); AudioManager.Instance.InitMixer(ar.asset_ as AudioMixer); AudioSource audio = mCoreObject.AddComponent <AudioSource>(); audio.playOnAwake = true; audio.loop = true; audio.outputAudioMixerGroup = AudioManager.Instance.GetAudioMixerGroup("Music"); BackGroundAudio backAudio = mCoreObject.AddComponent <BackGroundAudio>(); backAudio.Init(); if (Const.Language != LanguageType.SIMPLE_CHINESE) { string localizeData = LocalizeManager.Instance.GetLocalizationDataPath(Const.Language); yield return(GetGlobalMono().StartCoroutine(GameLocalizeHelper.CoLoadLocalizeFile(localizeData))); } // 加载Font ar = new AssetResource(); yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_asset("Assets/Res/UI/Textures/Emoji/Output/emoji.txt", typeof(UnityEngine.Object), ar))); mEmojiTxt = ar.asset_; if (mEmojiTxt == null) { Debug.LogError("emmoji.txt load failed."); } ar = new AssetResource(); yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_asset(EmojiText.GetEmojiTextName(EmojiText.EmojiMaterialType.EquipTips), typeof(UnityEngine.Object), ar))); mEmojiTxt_equipTips = ar.asset_; if (mEmojiTxt_equipTips == null) { Debug.LogError("emoji_equipTips.txt load failed."); } // 加载UIMain,程序中只加载一次 PrefabResource pr = new PrefabResource(); yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_prefab("Assets/Res/UI/Widget/Preset/UIRoot.prefab", pr, false))); pr.obj_.transform.position = new Vector3(0, 1000.0f, 0); GameObject.DontDestroyOnLoad(pr.obj_); mGame.Init(); // 加载Start场景 if (Game.Instance.IsSkillEditorScene) { var scene_asset_path = string.Format("Assets/Res/Map/scenes/{0}.unity", GlobalConst.DefaultTestScene); yield return(GetGlobalMono().StartCoroutine(ResourceLoader.Instance.load_scene(scene_asset_path, GlobalConst.DefaultTestScene, null))); } // destroy initscenloader GameObject.DestroyImmediate(NewInitSceneLoader.Instance.gameObject, true); // 初始化Game的状态机 mGame.InitFSM(); mGame.mIsInited = true; Application.targetFrameRate = Const.G_FPS; var fps_respond = mCoreObject.AddComponent <FPSRespond>(); fps_respond.FPSUpdateWaitTime = 15.0f; var fps_notice = mCoreObject.AddComponent <FPSNotice>(); // 预加载资源 ControlServerLogHelper.Instance.PostPlayerFollowRecord(PlayerFollowRecordSceneId.PreloadResEnd); ControlServerLogHelper.Instance.PostCloudLadderEventAction(CloudLadderMarkEnum.load_res); // 向后台请求渠道信息列表和服务器列表 #if !UNITY_IPHONE ControlServerLogHelper.Instance.GetChannelList(); #endif ControlServerLogHelper.Instance.GetServerList(); }
/// <summary> /// 加载UI资源 /// </summary> /// <param name="wndName"></param> /// <param name="baseWin"></param> /// <returns></returns> public IEnumerator CreateWindowFromPrefab(string wndName, UIBaseWindow baseWin) { float start_time = Time.unscaledTime; if (delay > 0) { yield return(new WaitForSeconds(delay)); } bool _reserve_asset = (wndName == UIManager.MainPanelName); // 是否保存ui界面的assetbundle资源 // 根据窗口类型设置不同的挂点 UIType type = UIHelper.GetUITypeByWindowName(wndName); Transform parent_trans = null; switch (type) { case UIType.Hud: { parent_trans = mHudRoot; break; } case UIType.Pop: { parent_trans = mPopRoot; break; } case UIType.Normal: { parent_trans = mNormalRoot; break; } default: { //只有loading parent_trans = mLoadingRoot; break; } } // 加载ui界面 PrefabResource pr = new PrefabResource(); var res_prefix = UIResPrefix; // if (Const.Language == LanguageType.KOREAN) // { // res_prefix = UIKoreanResPrefix; // } #if UNITY_IPHONE if (string.IsNullOrEmpty(baseWin.mPrefabName) == false && SDKHelper.GetSDKWinList().Contains(baseWin.mPrefabName)) { res_prefix = UICopyBagResPrefix; } #endif if (baseWin.mPrefabName != null) { yield return(StartCoroutine(ResourceLoader.Instance.load_prefab(string.Format("{0}{1}.prefab", res_prefix, baseWin.mPrefabName), pr, false, _reserve_asset, parent_trans))); } else { yield return(StartCoroutine(ResourceLoader.Instance.load_prefab(string.Format("{0}{1}.prefab", res_prefix, wndName), pr, false, _reserve_asset, parent_trans))); } GameObject obj = pr.obj_; if (obj == null) { yield break; } //设置Canvas组件的参数 Canvas canvas = obj.GetComponent <Canvas>(); if (canvas == null) { Debug.LogError("ui not have canvas " + wndName); canvas = obj.AddComponent <Canvas>(); } //canvas.pixelPerfect = true; canvas.renderMode = RenderMode.ScreenSpaceCamera; canvas.worldCamera = mCam; //canvas.additionalShaderChannels = AdditionalCanvasShaderChannels.None;// AdditionalCanvasShaderChannels.TexCoord1;// | AdditionalCanvasShaderChannels.Tangent; canvas.sortingLayerName = "Default"; // 检查GraphicRaycaster组件 var ray_caster = obj.GetComponent <GraphicRaycaster>(); if (ray_caster == null) { Debug.LogError("ui not have canvas raycaster " + wndName); obj.AddComponent <GraphicRaycaster>(); } // 设置CanvasScaler组件的参数 var canvas_scaler = obj.GetComponent <CanvasScaler>(); if (canvas_scaler == null) { Debug.LogError("ui not have canvas scalar " + wndName); canvas_scaler = obj.AddComponent <CanvasScaler>(); } canvas_scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvas_scaler.referencePixelsPerUnit = 100; float currency_scale = 1; currency_scale = canvas_scaler.referenceResolution.x / 1920; if (canvas_scaler.referenceResolution.x != 1920 && canvas_scaler.referenceResolution.x != 1334) { canvas_scaler.referenceResolution = new Vector2(1280, 720); } if (Screen.width / (float)Screen.height > 1.778f) { canvas_scaler.matchWidthOrHeight = 1; } else { canvas_scaler.matchWidthOrHeight = 0; } baseWin.CurrencyScale = currency_scale; // 设置界面的外部参数 string param1_str = ""; if (baseWin.ShowParam != null && baseWin.ShowParam.Length > 0 && baseWin.ShowParam[0] != null) { param1_str = baseWin.ShowParam[0].ToString(); } baseWin.Param1_str = param1_str; obj.transform.localPosition = Vector3.zero; obj.transform.localScale = Vector3.one; if (!obj.activeSelf) { obj.SetActive(true); } obj.name = obj.name.Replace("(Clone)", ""); baseWin.mUIObject = obj; //从ui加载出来的原始prefab有标志Atlas资源是否可以被回收的作用,不能删除,详见host_res_to_gameobj的代码 //GameObject.Destroy(obj); float cost_time = Time.unscaledTime - start_time; // 创建界面的货币栏 if (mCurrencyRes == null) { mCurrencyRes = new PrefabResource(); yield return(StartCoroutine(ResourceLoader.Instance.load_prefab("Assets/Res/UI/Widget/Preset/UICurrencyWindow.prefab", mCurrencyRes, true))); if (mCurrencyRes.obj_ == null) { yield break; } mCurrencyRes.obj_.SetActive(false); } CreateAndCheckMoneyBar(baseWin, obj, wndName, currency_scale, true); if (Const.Region == RegionType.KOREA) { //创建概率展示按钮 if (mProbabilityRes == null) { mProbabilityRes = new PrefabResource(); yield return(StartCoroutine(ResourceLoader.Instance.load_prefab( "Assets/Res/UI/Widget/Preset/UIProbabilityPublish.prefab", mProbabilityRes, true))); if (mProbabilityRes.obj_ == null) { yield break; } mProbabilityRes.obj_.SetActive(false); } CreateAndCheckProbabilityBtn(baseWin, obj, wndName, currency_scale, true); //创建七日退款按钮 if (mRefundRes == null) { mRefundRes = new PrefabResource(); yield return(StartCoroutine(ResourceLoader.Instance.load_prefab( "Assets/Res/UI/Widget/Preset/UIPolicyStatement.prefab", mRefundRes, true))); if (mRefundRes.obj_ == null) { yield break; } mRefundRes.obj_.SetActive(false); } CreateAndCheckRefundBtn(baseWin, obj, wndName, currency_scale, true); } //Debug.LogError("load window " + wndName + " cost: " + cost_time); xc.ClientEventManager <ClientEventType.ugui.UICoreEvent> .Instance.FireEvent(ClientEventType.ugui.UICoreEvent.UILOADDONE, new xc.ClientEventBaseArgs(baseWin)); }
/// <summary> /// 加载音效资源 /// </summary> /// <returns></returns> IEnumerator LoadAudio_dynamic(DynamicAudioItem item) { if (item == null) { yield break; } if (item.is_destroy) { yield break; } GameObject go = ObjCachePoolMgr.Instance.LoadFromCache(ObjCachePoolType.SMALL_PREFAB, UISoundTemplate) as GameObject; if (go == null) { PrefabResource ar_prefab = new PrefabResource(); yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_prefab(UISoundTemplate, ar_prefab))); if (ar_prefab.obj_ == null) { StopAudio_dynamic(item.unique_id); yield break; } GameObject obj = ar_prefab.obj_; if (item.is_destroy) { GameObject.DestroyImmediate(obj); yield break; } PoolGameObject pg = obj.AddComponent <PoolGameObject>(); if (pg != null) { pg.poolType = ObjCachePoolType.SMALL_PREFAB; pg.key = UISoundTemplate; } go = obj; } item.audioSource = go.GetComponent <AudioSource>(); if (item.audioSource == null) { item.audioSource = go.AddComponent <AudioSource>(); } go.SetActive(true); Camera cam = Camera.main; if (cam == null) { cam = GameObject.FindObjectOfType(typeof(Camera)) as Camera; } if (cam != null) { item.audioSource.transform.SetParent(cam.transform); item.audioSource.transform.localScale = Vector3.one; item.audioSource.transform.localPosition = Vector3.zero; item.audioSource.transform.localEulerAngles = Vector3.zero; } AssetResource ar = new AssetResource(); yield return(ResourceLoader.Instance.StartCoroutine(ResourceLoader.Instance.load_asset(item.res_path, typeof(Object), ar))); if (ar.asset_ == null) { GameDebug.LogError(string.Format("the res {0} does not exist", item.res_path)); StopAudio_dynamic(item.unique_id); yield break; } if (item.is_destroy) { ar.destroy(); yield break; } AudioClip audio_clip = ar.asset_ as AudioClip; if (audio_clip == null) { GameDebug.LogError(string.Format("the res {0} is not audio clip", item.res_path)); ar.destroy(); yield break; } item.clip = audio_clip; item.audioSource.clip = item.clip; item.audioSource.loop = item.is_loop; float volume = GlobalSettings.GetInstance().SFXVolume; item.audioSource.volume = volume * item.volume; item.audioSource.mute = GlobalSettings.GetInstance().SFXMute; item.audioSource.Play(); UnityAction cbFunc = () => { if (item != null) { StopAudio_dynamic(item.unique_id); } }; if (item.is_loop == false) { xc.MainGame.GetGlobalMono().StartCoroutine(DelayedCallback(item.clip.length, cbFunc)); } }