private void CreateMineral(EditorMineral editorMineral) { GameObject mineralObj = new GameObject(); mineralObj.transform.SetParent(transform); mineralObj.transform.localRotation = Quaternion.identity; mineralObj.transform.position = editorMineral.mineralPos.ToVector3(); mineralObj.name = editorMineral.name; Mineral mineral = mineralObj.AddComponent <Mineral>(); mineral.Init(editorMineral.mineralNpcId, editorMineral.mineralGroupId); }
/// <summary> /// 创建矿节点 /// </summary> /// <param name="mark"></param> private void CreateMineral(SemaphoreMark mark) { GameObject treasureObj = new GameObject(); treasureObj.transform.SetParent(transform); treasureObj.transform.localRotation = Quaternion.identity; treasureObj.transform.position = mark.transform.position; treasureObj.name = mark.name; Mineral mineral = treasureObj.AddComponent <Mineral>(); mineral.Init(mark.m_NpcId, mark.m_GroupId); }
public bool Exists(uint groupId, uint npcId, string name) { if (m_MineralCache == null || m_MineralCache.Count <= 0) { return(false); } for (int iMineral = 0; iMineral < m_MineralCache.Count; iMineral++) { Mineral mineral = m_MineralCache[iMineral]; if (mineral != null && mineral.m_MineralNpcId == npcId && mineral.m_MineralGroupId == groupId && mineral.name.Equals(name)) { return(true); } } return(false); }
public void Remove(SemaphoreMark mark) { RefreshMineralCache(); if (Exists(mark)) { if (m_MineralCache != null && m_MineralCache.Count > 0) { for (int iMineral = m_MineralCache.Count - 1; iMineral >= 0; iMineral--) { Mineral mineral = m_MineralCache[iMineral]; if (mineral.name == mark.name && mineral.m_MineralNpcId == mark.m_NpcId && mineral.m_MineralGroupId == mark.m_GroupId) { mineral.Release(true); } } } } }
/// <summary> /// 同步信息 /// </summary> public void SyncInfo() { if (m_MineralCache == null || m_MineralCache.Count <= 0) { return; } if (m_GamingMapArea != null) { MineralRootMark treasureRoot = null; Area[] areas = FindObjectsOfType <Area>(); if (areas != null && areas.Length > 0) { for (int iArea = 0; iArea < areas.Length; iArea++) { Area area = areas[iArea]; if (area.Uid == m_GamingMapArea.m_AreaId) { treasureRoot = area.m_MineralRoot; } } } if (treasureRoot == null) { EditorUtility.DisplayDialog("提示", string.Format("同步失败!未找到{0}", m_GamingMapArea.m_AreaId), "OK"); return; } List <SemaphoreMark> semaphores = treasureRoot.m_SemaphorMarkCache; if (m_MineralCache != null && m_MineralCache.Count > 0) { List <Mineral> needRelease = new List <Mineral>(); for (int iMineral = m_MineralCache.Count - 1; iMineral >= 0; iMineral--) { Mineral mineral = m_MineralCache[iMineral]; bool hasAlive = false; for (int iSem = 0; iSem < semaphores.Count; iSem++) { SemaphoreMark mark = semaphores[iSem]; if (mineral.name == mark.name && mineral.m_MineralNpcId == mark.m_NpcId && mineral.m_MineralGroupId == mark.m_GroupId) { mineral.Sync(mark); hasAlive = true; break; } } if (!hasAlive) { needRelease.Add(mineral); } } if (needRelease != null && needRelease.Count > 0) { for (int iNeed = 0; iNeed < needRelease.Count; iNeed++) { needRelease[iNeed].Release(true); } needRelease.Clear(); } } } }