/// <summary> /// 注销一个HUD /// </summary> /// <param name="id"></param> private void UnRegisterHUD(int id) { if (hudDic.ContainsKey(id)) { EntityHUD entityHUD = hudDic[id]; ReuseHUD(entityHUD); hudDic.Remove(id); } }
/// <summary> /// 创建一个HUD /// </summary> /// <param name="asset"></param> /// <param name="id"></param> /// <param name="name"></param> /// <param name="percent"></param> /// <param name="pos"></param> private void CreateHUD(Object asset, int id, string name, float percent, Vector3 pos) { EntityHUD entityHUD = GetEntityHUD(asset); RegisterHUD(id, entityHUD); entityHUD.Initial(name, percent); UpdateHUDPos(pos, entityHUD); }
/// <summary> /// 注册一个HUD /// </summary> /// <param name="id"></param> /// <param name="entityHUD"></param> private void RegisterHUD(int id, EntityHUD entityHUD) { if (!hudDic.ContainsKey(id)) { hudDic.Add(id, entityHUD); } else { hudDic[id] = entityHUD; } }
/// <summary> /// 计算位置,如果在屏幕范围内则显示并更新位置,否则不显示 /// </summary> /// <param name="pos"></param> /// <param name="entityHUD"></param> private void UpdateHUDPos(Vector3 pos, EntityHUD entityHUD) { Vector3 posScreen = Camera.main.WorldToScreenPoint(pos); if (IsInScreen(posScreen)) { entityHUD.Show(); entityHUD.UpdatePos(posScreen); } else { entityHUD.Hide(); } }
/// <summary> /// 获得实体HUD /// </summary> /// <param name="obj"></param> /// <returns></returns> private EntityHUD GetEntityHUD(Object obj) { if (hudCache.Count > 0) { return(hudCache.GetObj()); } else { GameObject go = (GameObject)Instantiate(obj); EntityHUD entityHUD = go.GetComponent <EntityHUD>(); if (entityHUD == null) { entityHUD = go.AddComponent <EntityHUD>(); } return(entityHUD); } }
/// <summary> /// 缓存HUD /// </summary> /// <param name="entityHUD"></param> private void ReuseHUD(EntityHUD entityHUD) { entityHUD.Clear(); hudCache.PutObj(entityHUD); }