public BigWorldSystem() { MessageHandler.RegisterMessageHandler(MessageDefine.SCBuildingListResp, OnRes); MessageHandler.RegisterMessageHandler(MessageDefine.SCBuildingUnlockResp, OnRes); GameEvents.UIEvents.UI_Loading_Event.OnLoadingOver += OnLoadingOver; GameEvents.BigWorld_Event.OnReflashBigWorld += OnReflashBigWorld; m_gameObject = new BigWorldGameObject(); }
public void OnDestory() { UnityEngine.Debug.Log("Destory BigWorld"); MessageHandler.UnRegisterMessageHandler(MessageDefine.SCBuildingListResp, OnRes); MessageHandler.UnRegisterMessageHandler(MessageDefine.SCBuildingUnlockResp, OnRes); GameEvents.UIEvents.UI_Loading_Event.OnLoadingOver -= OnLoadingOver; GameEvents.BigWorld_Event.OnReflashBigWorld -= OnReflashBigWorld; this.m_gameObject.OnDestory(); this.isBuildLoad = false; this.isFirstLoad = true; this.m_gameObject = null; this.m_openUIName = string.Empty; this.m_needShowMainUI = true; this.m_currentGroupID = 1; }
private void ChangeBuildMaterial() { MeshRenderer[] renderer = m_buildObj.transform.GetComponentsInChildren <MeshRenderer>(); for (int i = 0; i < renderer.Length; i++) { Material commonMat = BigWorldGameObject.GetBuildCommonMatByName(renderer[i].sharedMaterial.name + ".mat"); renderer[i].sharedMaterial = commonMat; } //if (m_confBuild == null) //{ // return; //} ////Transform target = m_rootObj.transform.Find(confBuild.lockResource); //if (m_confBuild.unlockMaterial.Length != m_confBuild.unlockResource.Length) //{ // Debug.LogError("buid resource error" + m_BuildID + " unlockMaterial:" + m_confBuild.unlockMaterial.Length + " unlockResource:" + m_confBuild.unlockResource.Length); // return; //} //for (int i = 0; i < m_confBuild.unlockMaterial.Length; i++) //{ // Transform nodeTran = m_buildObj.transform.Find(m_confBuild.unlockResource[i]); // if (nodeTran == null) // { // Debug.LogError("unlockResource error " + m_confBuild.unlockResource[i]); // continue; // } // MeshRenderer render = nodeTran.GetComponent<MeshRenderer>(); // if (render == null) // { // continue; // } // if (!m_cacheMaterial.ContainsKey(m_confBuild.unlockMaterial[i])) // { // Debug.LogError("material is not exist " + m_confBuild.unlockMaterial[i]); // continue; // } // if (cb != null) // { // cb(render, m_cacheMaterial[m_confBuild.unlockMaterial[i]]); // } // //render.material = m_cacheMaterial[m_confBuild.unlockMaterial[i]]; //} }
public BigWorldBuild(long buildId, GameObject buildObj, ParticleScale wallEffectMaterial) { this.m_BuildID = buildId; this.m_buildObj = buildObj; this.m_unlockMaterial = BigWorldGameObject.GetBuildCommonMatByName("UnLock.mat"); //this.m_cacheMaterial = cacheMaterial; this.m_confBuild = ConfBuilding.Get(buildId); long[] m_sceneIDs = CommonTools.StringToLongArray(m_confBuild.sceneIds); long[] m_completeTaskIDs = CommonTools.StringToLongArray(m_confBuild.taskIds); m_achorData = new BuidAchorData(buildId, m_sceneIDs, m_completeTaskIDs); this.status = 0; this.m_srcPos = buildObj.transform.position; //this.m_unlockMaterial = unLockMaterial; this.m_unLockEffect = wallEffectMaterial; //this.m_dimianEffectMat = dimainEffectMat; //Transform wallTran = buildObj.transform.Find("wall"); //if (wallTran != null) //{ // this.m_buildWall = wallTran.gameObject; // this.m_buildWall.SetActive(false); //} }
//播放解锁 private void PlayUnLockEffect(Action callback = null) { EngineCoreEvents.AudioEvents.PlayAudio.SafeInvoke(Audio.AudioType.UISound, GameCustomAudioKey.unlock_success.ToString()); BigWorldGroupData groupData = this.m_buildObj.GetComponent <BigWorldGroupData>(); if (groupData == null) { Debug.LogError("group data error"); return; } List <Material> mats = new List <Material>(); Dictionary <MeshRenderer, Material> m_srcMats = new Dictionary <MeshRenderer, Material>(); //List<Material> m_srcMats = new List<Material>(); //Material m_dimianMat = null; //BigWorldDimianData dimianData = null; //Material dimainMat = null; MeshRenderer[] renderer = m_buildObj.transform.GetComponentsInChildren <MeshRenderer>(); for (int i = 0; i < renderer.Length; i++) { Material mat = renderer[i].sharedMaterial; BigWorldModelData modelData = renderer[i].gameObject.GetComponent <BigWorldModelData>(); if (modelData != null) { renderer[i].material = m_unlockMaterial; renderer[i].material.SetFloat("_MaxHei", modelData.maxHei); renderer[i].material.SetTexture("_MainTex", mat.GetTexture("_MainTex")); renderer[i].material.SetTexture("_LightMapTex", mat.GetTexture("_NightTex")); //render.material.SetFloat("_LightLerp", mat.GetFloat("_lerp")); mats.Add(renderer[i].material); } m_srcMats.Add(renderer[i], BigWorldGameObject.GetBuildCommonMatByName(mat.name + ".mat")); } groupData.PlayEffect(mats, () => { TimeModule.Instance.SetTimeout(() => { foreach (var kv in m_srcMats) { kv.Key.sharedMaterial = kv.Value; } this.m_unLockEffect.transform.SetParent(this.m_buildObj.transform); this.m_unLockEffect.transform.localPosition = Vector3.zero; //this.m_unLockEffect.transform.position = m_buildObj.transform.position; //+ Vector3.up * 0.1f this.m_unLockEffect.transform.localPosition += groupData.m_FuncPos; this.m_unLockEffect.scale = groupData.m_EffectScale; this.m_unLockEffect.gameObject.SetActive(true); TimeModule.Instance.SetTimeout(() => { this.m_unLockEffect.gameObject.SetActive(false); }, 2f); Dictionary <UBSParamKeyName, object> _params = new Dictionary <UBSParamKeyName, object>() { { UBSParamKeyName.ContentID, BuildID }, { UBSParamKeyName.ContentType, "unLock" }, { UBSParamKeyName.Description, DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss:ms") }, }; UserBehaviorStatisticsModules.Instance.LogEvent(UBSEventKeyName.build_plan, null, _params); GameObject.DestroyImmediate(groupData); GameEvents.BigWorld_Event.OnBuildUnLockComplete.SafeInvoke(BuildID); if (callback != null) { callback(); } }, 1f); }); }