/// <summary> /// 加载部件资源 /// </summary> /// <param name="path">部件资源地址</param> /// <param name="callback">加载回调</param> protected void LoadPrefabFromPool(string assetAddress, UnityAction <GameObject> callback) { UnityAction <GameObject> callbackFun = callback; AssetUtil.LoadAssetAsync(assetAddress, (pathOrAddress, returnObject, userData) => { //忽略关闭之后的加载回调 if (!Opened) { return; } if (returnObject != null) { GameObject prefab = (GameObject)returnObject; prefab.CreatePool(pathOrAddress); callbackFun?.Invoke(prefab); InstallScrollController(); } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
/// <summary> /// 加载环境 /// </summary> private void LoadEnvirontment() { uint reloadID = m_ReloadID; string path = m_EnvironmentPath; AssetUtil.LoadAssetAsync(path, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { GameObject prefab = (GameObject)returnObject; if (reloadID == m_ReloadID && path.Equals(m_EnvironmentPath) && m_ModelInfoArray != null && m_ModelInfoArray.Length > 0) { prefab.CreatePool(1, path); m_LightEnvirontment = prefab.Spawn(); m_LightEnvirontment.SetActive(false); ModelBox = m_LightEnvirontment.transform.Find("UI3DBox"); ModelBox.localEulerAngles = Vector3.zero; ModelBox.localScale = Vector3.one; LoadModel(0); } } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
public void RequestInitialize(MapController owner, AreaInfo areaInfo) { m_AreaRoot = new GameObject(Constants.AREA_GAMEOBJECT_NAME_STARTWITHS + areaInfo.Uid).transform; m_AreaRoot.SetPositionAndRotation(Vector3.zero, areaInfo.Rotation); m_IsReleasing = false; m_Owner = owner; m_AreaInfo = areaInfo; DoUpdate_AreaRoot(true); string areaDetailInfoAddressableKey = string.Format(Constants.AREA_DETAIL_INFO_FILENAME_FORMAT , owner.GetMapUid() , areaInfo.Uid); m_AreaDetailLoaderHandle = AssetUtil.LoadAssetAsync(areaDetailInfoAddressableKey, OnLoadAreaDetailInfoCompleted); }
public void RequestInitialize(uint mapUid, System.Action OnReadyToPlayCallback = null) { DebugUtility.Log(Constants.LOG_TAG, string.Format("Map({0}) Request Initialize", mapUid)); m_MapUid = mapUid; m_ForReadyToPlayCallback = new ForReadyToPlayCallback(); m_ForReadyToPlayCallback.OnReadyToPlayCallback = OnReadyToPlayCallback; m_State = State.LoadingMap; m_ExpiredAreaControllers = new BetterList <AreaController>(4); // 加载新Map AssetUtil.LoadAssetAsync(Constants.MAP_INFO_ADDRESSKEY_STARTWITHS + mapUid, OnLoadMapInfoCompleted); }
public override void OnHide(object msg) { base.OnHide(msg); m_AnimatorController.OnAnimationEvent -= OnAnimationEvent; ServerTimeUtil.Instance.OnTick -= OnUpdate; m_OpenEnd = false; m_SwitchMapEnd = false; m_LoadingPanelParamere = null; WwiseUtil.PlaySound((int)SoundID.LoadEnd, false, null); //如果全加载过了 //随机选一个 并且return if (m_AllImageLoaded) { m_Index = Random.Range(IMAGE_INDEX_MIN, IMAGE_INDEX_MAX); return; } //选一个没加载过的 int index; while (true) { index = Random.Range(IMAGE_INDEX_MIN, IMAGE_INDEX_MAX); Sprite sprite; if (!m_LoadList.TryGetValue(index, out sprite)) { m_Index = index; break; } } //加载并且存一个id //如果数量都加载了 就标记m_AllImageLoaded 为true string m_BgAddress = string.Format(LOADING_ADDRESS, m_Index); AssetUtil.LoadAssetAsync(m_BgAddress, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { Texture2D texture = (Texture2D)returnObject; m_LoadList.Add(m_Index, Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero)); m_AllImageLoaded = m_LoadList.Values.Count == IMAGE_INDEX_MAX - IMAGE_INDEX_MIN; } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
/// <summary> /// 加载列表模板 /// </summary> /// <param name="assetAddress">资源路径</param> private void LoadListTemplate(string assetAddress) { string path = assetAddress; if (m_TemplateStates.ContainsKey(path)) { return; } m_TemplateStates[path] = false; AssetUtil.LoadAssetAsync(assetAddress, (pathOrAddress, returnObject, userData) => { //忽略关闭之后的加载回调 if (!m_Scroller) { return; } //忽略重复的加载 if (m_Templates.ContainsKey(path)) { return; } if (returnObject != null) { GameObject prefab = (GameObject)returnObject; prefab.CreatePool(pathOrAddress); m_Templates[path] = prefab; m_TemplateStates[path] = true; } else { if (m_Templates.ContainsKey(path)) { m_Templates.Remove(path); } Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } ResetListTemplate(); }); }
/// <summary> /// 显示通讯列表 /// </summary> /// <param name="groupId"></param> private void ShowVideoPhoneList(int index) { if (!m_Root.gameObject.activeSelf) { m_Root.gameObject.SetActive(true); } if (m_PlayParameter.npcId > 0) { m_Name.text = m_CfgEternityProxy.GetNpcByKey(m_PlayParameter.npcId).Name; } else { m_Name.text = TableUtil.GetLanguageString(string.Format("video_phone_name_{0}", m_VideoPhones[index].Value.Id)); } UIUtil.SetIconImage(m_Icon, (uint)m_VideoPhones[index].Value.Icon); if (m_SoundPlayObj != null) { GameObject.DestroyImmediate(m_SoundPlayObj.GetComponent <AK.Wwise.TAkGameObjEventMonitor>()); WwiseUtil.PlaySound(m_VideoPhones[index].Value.Voice, false, m_SoundPlayObj.transform, OnPlayEnd, new UserEndData(m_VideoPhones.GetHashCode(), index)); } // m_Coroutine = UIManager.Instance.StartCoroutine(Excute(2f, (int tindex) => //{ // Debug.LogError("---------------> play hasdId = " + m_VideoPhones.GetHashCode() + " tindex = " + tindex); // //m_Index = tindex; // WwiseUtil.PlaySound(11, false, m_SoundPlayObj.transform, OnPlayEnd, new UserEndData(m_VideoPhones.GetHashCode(), tindex)); //}, index)); AssetUtil.LoadAssetAsync(m_VideoPhones[index].Value.VoiceEffect, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { Material audio = (Material)returnObject; m_Audio.material = audio; m_RepeatAudio.material = audio; } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
public override void OnInitialize(ISpacecraftAvatarProperty property) { m_Property = property; m_RendererVisible = new List <int>((int)ChangeSpacecraftVisibilityEvent.VisibilityType.Count); m_EternityProxy = GameFacade.Instance.RetrieveProxy(ProxyName.CfgEternityProxy) as CfgEternityProxy; m_GameplayProxy = GameFacade.Instance.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy; AssetUtil.LoadAssetAsync(property.GetModelName(), (pathOrAddress, returnObject, userData) => { if (returnObject != null) { OnLoadModel((GameObject)returnObject, property.GetModelName()); } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
/// <summary> /// 加载资源 /// </summary> /// <param name="path"></param> private void LoadAssetAsync(string path) { AssetUtil.LoadAssetAsync(path, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { GameObject prefab = returnObject as GameObject; if (prefab.CountPooled() < 10) { prefab.CreatePool(10, path); } } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
/// <summary> /// 播放下一个消息 /// </summary> private void PlayNextMessage() { if (m_MessageList.Count > 0) { m_MessageList.Sort((a, b) => { return(b.priority - a.priority); }); m_CurrentMessage = m_MessageList[0]; m_MessageList.RemoveAt(0); AssetUtil.LoadAssetAsync(m_CurrentMessage.prefabPath, (pathOrAddress, returnObject, userData) => { if (!m_RootNode) { return; } if (returnObject != null) { GameObject prefab = (GameObject)returnObject; prefab.CreatePool(pathOrAddress); m_CurrentMessageView = prefab.Spawn(m_RootNode).transform; m_CurrentMessageView.gameObject.SetActive(true); m_CurrentAnimationEvent = FindComponent <UIAnimationEvent>(m_CurrentMessageView, "Content/Message"); m_CurrentAnimationEvent.OnAnimationEvent -= OnMessagePlayComplete; m_CurrentAnimationEvent.OnAnimationEvent += OnMessagePlayComplete; InitializeMessageAnimation(); } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); PlayNextMessage(); } } ); } }
/// <summary> /// 特效的初始化 /// </summary> /// <param name="effectPath"></param> /// <param name="poolGroup"></param> public void Initialize(string effectPath, string poolGroup = "", OnEffectLoaded OnEffectLoaded = null, System.Object usedata = null) { m_OnEffectLoaded += OnEffectLoaded; this.usedata = usedata; m_AssetName = effectPath; m_Status = EffectStatus.Playing; m_EffectID = EffectID(); MyName = "EffectController_" + m_AssetName + "_" + m_EffectID; name = MyName; LoadData d = new LoadData(); d.effectID = m_EffectID; d.assetName = m_AssetName; if (!string.IsNullOrEmpty(m_AssetName) && effectPath != "None") { m_AssetLoadHandler = AssetUtil.LoadAssetAsync(effectPath, OnEffectLoadComplete, Loader.AssetLoaderPriority.Default, null, d); } }
/// <summary> /// 加载部件资源 /// </summary> /// <param name="path">部件资源地址</param> /// <param name="parent">部件资源挂点</param> protected void LoadViewPart(string assetAddress, Transform parent) { UnloadViewPart(); m_AssetPath = assetAddress; string path = assetAddress; AssetUtil.LoadAssetAsync(assetAddress, (pathOrAddress, returnObject, userData) => { //忽略关闭之后的加载回调 if (!Opened) { return; } //忽略已经失效的加载回调 if (!string.Equals(m_AssetPath, path)) { return; } if (returnObject != null) { GameObject prefab = (GameObject)returnObject; prefab.CreatePool(pathOrAddress); m_Transform = prefab.Spawn(parent).transform; OnViewPartLoaded(); } else { m_Transform = null; Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
public void ChangeMaterial(string name, Color color = default(Color), float rate = 0) { AssetUtil.LoadAssetAsync(name, (pathOrAddress, uObj, userData) => { UnityEngine.Material cMaterial = uObj as UnityEngine.Material; cMaterial.SetColor("_Frenel", color); /// 变化范围1-0-1-0-1... cMaterial.SetFloat("_Fre", 1); cMaterial.SetFloat("_Vertex", 0); if (m_MeshRenderer) { m_MeshRenderer.material = cMaterial; if (rate > 0) { m_Rate = rate; } } } ); }
public void CreateEffectsPools(string effectPrefabAddress) { if (effectPrefabAddress.Length == 0) { return; } if (m_EffectsPoolTable.ContainsKey(effectPrefabAddress)) { return; } AssetUtil.LoadAssetAsync(effectPrefabAddress, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { GameObject go = (UnityEngine.GameObject)returnObject; Assert.IsNotNull(go, effectPrefabAddress); if (m_EffectsPoolTable.ContainsKey(effectPrefabAddress)) { return; } go.CreatePool(10, effectPrefabAddress); go.name = effectPrefabAddress; if (!m_EffectsPoolTable.ContainsKey(effectPrefabAddress)) { m_EffectsPoolTable.Add(effectPrefabAddress, go); } } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }
/// <summary> /// 加载光照组 /// </summary> private void LoadPrefab() { if (m_Lighting != null) { LoadModel(); } else if (!m_LightingLoading) { m_LightingLoading = true; string path = GetLightPrefabPath(); AssetUtil.LoadAssetAsync(path, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { if (pathOrAddress.Equals(path)) { GameObject prefab = (GameObject)returnObject; prefab.CreatePool(1, pathOrAddress); m_Lighting = prefab.Spawn(); m_Lighting.gameObject.SetActive(false); m_LightingLoading = false; m_ModelRoot = m_Lighting.transform.Find("UI3DBox"); LoadModel(); } } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); } }
/// <summary> /// 加载模型 /// </summary> /// <param name="i">索引</param> private void LoadModel(int i) { if (m_ModelInfoArray != null && i < m_ModelInfoArray.Length) { uint reloadID = m_ReloadID; int index = i; string path = m_ModelInfoArray[i].perfab; if (!string.IsNullOrEmpty(path)) { AssetUtil.LoadAssetAsync(path, (pathOrAddress, returnObject, userData) => { if (reloadID != m_ReloadID) { return; } if (m_LightEnvirontment == null) { return; } if (m_ModelInfoArray == null) { return; } if (index >= m_ModelInfoArray.Length) { return; } if (!path.Equals(m_ModelInfoArray[index].perfab)) { return; } WarShipRotate autoMoveAndRotate = ModelBox.GetOrAddComponent <WarShipRotate>(); if (autoMoveAndRotate != null) { autoMoveAndRotate.IsRotate = ModelRotate; } GameObject prefab = returnObject as GameObject; prefab.CreatePool(pathOrAddress); if (ModelArray == null) { ModelArray = new GameObject[m_ModelInfoArray.Length]; } ModelArray[index] = prefab.Spawn(ModelBox); ModelArray[index].SetActive(true); ModelArray[index].transform.localEulerAngles = m_ModelInfoArray[index].rotation; ModelArray[index].transform.localPosition = m_ModelInfoArray[index].position; ModelArray[index].transform.localScale = m_ModelInfoArray[index].scale; if (index < ModelArray.Length - 1) { LoadModel(index + 1); } else { RebuildModelBounds(); if (!string.IsNullOrEmpty(EffectPerfab)) { LoadEffect(); } else { InstallModelAndEffect(); } } }); } } }
/// <summary> /// 加载模型 /// </summary> private void LoadModel() { if (m_Model != null) { m_Model.Recycle(); m_Model = null; m_ModelPath = null; } string path = m_ModelPathNext; if (string.IsNullOrEmpty(path)) { return; } AssetUtil.LoadAssetAsync(path, (pathOrAddress, returnObject, userData) => { if (returnObject != null) { GameObject prefab = (GameObject)returnObject; if (path.Equals(m_ModelPathNext)) { m_ModelPath = m_ModelPathNext; m_ModelPathNext = null; prefab.CreatePool(1, path); m_Model = prefab.Spawn(m_ModelRoot); m_Model.transform.rotation = Quaternion.Euler(GetBaseRotation() + m_Rotation); m_Model.transform.localPosition = GetBasePosition() + m_Position; m_Model.transform.localScale = m_Scale; m_RenderTexture = m_RenderTexture != null ? m_RenderTexture : new RenderTexture(GetTextureSize(), GetTextureSize(), 24, RenderTextureFormat.ARGB32); m_ModelCamera = m_Lighting.GetComponentInChildren <Camera>(); if (m_ModelCamera != null) { m_ModelCamera.targetTexture = m_RenderTexture; } m_RawImage = GetComponent <RawImage>(); if (m_RawImage != null) { m_RawImage.texture = m_RenderTexture; m_RawImage.gameObject.SetActive(true); if (m_ModelCamera != null) { RectTransform rect = m_RawImage.GetComponent <RectTransform>(); m_ModelCamera.aspect = rect.rect.width / rect.rect.height; } } m_Lighting.gameObject.SetActive(true); SetToLayer(m_Lighting, true); CheckCharacterRotationComponent(); if (m_Lookat) { SetTarget(); } } } else { Debug.LogError(string.Format("资源加载成功,但返回null, pathOrAddress = {0}", pathOrAddress)); } }); }