2
0
Fork 0

headbar 血条和交互条分开

master
cd 2 years ago
parent 8ede1380f1
commit 45ca5330af

@ -20,10 +20,14 @@ namespace Game
private readonly Dictionary<int, List<UIPoolItem<ViewHitBuff>>> _hitBuffDict =
new Dictionary<int, List<UIPoolItem<ViewHitBuff>>>();
private readonly Dictionary<int, UIPoolItem<ViewInteract>> _interactDict =
new Dictionary<int, UIPoolItem<ViewInteract>>();
protected override void OnCreate()
{
CreateUI(false);
}
protected override void OnOpen()
{
//打开时创建所有非主角实体的血条
@ -37,6 +41,7 @@ namespace Game
SetHpBar(entity.ID(), true);
SetHitNum(entity.ID(), true);
SetInteract(entity.ID(), true);
}
EventManager.Instance.AddEvent<PEntityAlive>(EEvent.EntityAlive, OnEntityAlive);
@ -93,7 +98,7 @@ namespace Game
{
var headBarItem = kvp.Value;
var posScreen = GetScreenPos(Util.EntityViewPos(entity));
headBarItem.MComponent.SetPosition(posScreen.x, posScreen.y - 80, posScreen.z);
headBarItem.Component.SetPosition(posScreen.x, posScreen.y - 80, posScreen.z);
}
}
@ -106,7 +111,7 @@ namespace Game
var posScreen = GetScreenPos(Util.EntityViewPos(entity));
foreach (var item in hitNumList)
{
item.MComponent.SetPosition(posScreen.x, posScreen.y, posScreen.z);
item.Component.SetPosition(posScreen.x, posScreen.y, posScreen.z);
}
}
}
@ -120,10 +125,20 @@ namespace Game
var posScreen = GetScreenPos(Util.EntityViewPos(entity));
foreach (var item in hitNumList)
{
item.MComponent.SetPosition(posScreen.x, posScreen.y - 40, posScreen.z);
item.Component.SetPosition(posScreen.x, posScreen.y - 40, posScreen.z);
}
}
}
foreach (var kvp in _interactDict)
{
var entity = Util.GetEntity(kvp.Key);
if (entity != null)
{
var interactItem = kvp.Value;
var posScreen = GetScreenPos(Util.EntityViewPos(entity));
interactItem.Component.SetPosition(posScreen.x, posScreen.y - 80, posScreen.z);
}
}
}
/// <summary>
@ -157,7 +172,7 @@ namespace Game
if (hp.DmgShowTime <= 0)
{
hp.DmgShowTime = 0;
var lastItem = hitNumList[hitNumList.Count - 1].MComponent as ViewHitNum;
var lastItem = hitNumList[hitNumList.Count - 1].Component as ViewHitNum;
lastItem.m_step2.Play();
if (GameRandom.Roll(0.5f))
{
@ -178,7 +193,7 @@ namespace Game
}
var item = hitNumList[i];
var hitInfo = hitNumList[i].MComponent as ViewHitNum;
var hitInfo = hitNumList[i].Component as ViewHitNum;
if (!hitInfo.m_step2.playing)
{
item.Destroy();
@ -212,7 +227,7 @@ namespace Game
for (int i = hitNumList.Count - 1; i >= 0; i--)
{
var item = hitNumList[i];
var hitInfo = hitNumList[i].MComponent as ViewHitBuff;
var hitInfo = hitNumList[i].Component as ViewHitBuff;
if (entity.pause.IsPause)
{
hitInfo.m_step1.SetPaused(true);
@ -239,6 +254,43 @@ namespace Game
SetHpBar(param.Entity, param.IsAlive);
SetHitNum(param.Entity, param.IsAlive);
SetInteract(param.Entity, param.IsAlive);
}
private void SetInteract(int entityID, bool isAlive = true)
{
var entity = Util.GetEntity(entityID);
if (!entity.hasInteract)
{
return;
}
if (isAlive)
{
if (!_interactDict.ContainsKey(entityID))
{
var interactBar = UIManager.Instance.Creator.CreateUIItem<ViewInteract>(ViewInteract.URL);
_interactDict[entityID] = interactBar;
var interactComp = interactBar.Component;
var interact = entity.interact;
BindData(interact.IsActive,
(_, now) => { interactComp.m_showInteract.selectedIndex = now ? 1 : 0; });
BindData(interact.IsTarget,
(_, now) => { interactComp.m_isTarget.selectedIndex = now ? 1 : 0; });
}
}
else
{
if (_interactDict.ContainsKey(entityID))
{
_interactDict[entityID].Destroy();
_interactDict.Remove(entityID);
var interact = entity.interact;
UnbindData(interact.IsActive);
UnbindData(interact.IsTarget);
}
}
}
private void SetHitNum(int entityID, bool isAlive = true)
@ -274,9 +326,8 @@ namespace Game
private void SetHpBar(int entityID, bool isAlive = true)
{
var entity = Util.GetEntity(entityID);
if (entity.IsMaster())
if (!entity.hasHp)
{
//排除主角
return;
}
@ -287,7 +338,7 @@ namespace Game
//创建血条UI
var hpBar = UIManager.Instance.Creator.CreateUIItem<Viewc_blood>(Viewc_blood.URL);
_hpBarDict[entityID] = hpBar;
var hpComp = hpBar.MComponent;
var hpComp = hpBar.Component;
if (entity.hasHp)
{
var hp = entity.hp;
@ -352,14 +403,6 @@ namespace Game
}
});
}
if (entity.hasInteract)
{
var interact = entity.interact;
BindData(interact.IsActive, (_, now) => { hpComp.m_showInteract.selectedIndex = now ? 1 : 0; });
BindData(interact.IsTarget,
(_, now) => { hpComp.m_Interact.m_isTarget.selectedIndex = now ? 1 : 0; });
}
}
}
else
@ -387,13 +430,6 @@ namespace Game
UnbindData(ai.IsHungryFull);
UnbindData(ai.AttackPermit);
}
if (entity.hasInteract)
{
var interact = entity.interact;
UnbindData(interact.IsActive);
UnbindData(interact.IsTarget);
}
}
}
}
@ -422,14 +458,14 @@ namespace Game
{
hp.LastDmg = dmg;
var hitNum = UIManager.Instance.Creator.CreateUIItem<ViewHitNum>(ViewHitNum.URL);
var item = hitNum.MComponent as ViewHitNum;
var item = hitNum.Component as ViewHitNum;
hitList.Add(hitNum);
targetItem = item;
}
else
{
hp.LastDmg += dmg;
targetItem = hitList[hitList.Count - 1].MComponent as ViewHitNum;
targetItem = hitList[hitList.Count - 1].Component as ViewHitNum;
}
targetItem.m_num.text = $"{hp.LastDmg}";
@ -447,7 +483,7 @@ namespace Game
var hitList = _hitBuffDict[entityID];
var hitNum = UIManager.Instance.Creator.CreateUIItem<ViewHitBuff>(ViewHitBuff.URL);
hitList.Add(hitNum);
var item = hitNum.MComponent as ViewHitBuff;
var item = hitNum.Component as ViewHitBuff;
item.m_name.text = text;
item.m_step1.Play();
}

@ -5,14 +5,14 @@ namespace Game
public class UIPoolItem : ObjectPoolItemBase { }
public class UIPoolItem<T> : UIPoolItem where T : GComponent, new()
{
public T MComponent;
public T Component;
protected override void OnCreate()
{
MComponent.visible = true;
Component.visible = true;
}
protected override void OnDestroy()
{
MComponent.visible = false;
Component.visible = false;
}
}
public class UIPoolManager : ObjectPoolBase<UIPoolManager>
@ -25,10 +25,10 @@ namespace Game
var contentItem = UIPackage.GetItemByURL(url);
var pkgName = contentItem.owner.name;
var compName = contentItem.name;
string typeName = $"{contentItem.owner.name}_{contentItem.name}";
var typeName = $"{contentItem.owner.name}_{contentItem.name}";
var poolObj = Create<UIPoolItem<T>>(typeName, (item) =>
{
item.MComponent = CreateUIComponent(pkgName, compName) as T;
item.Component = CreateUIComponent(pkgName, compName) as T;
});
return poolObj;
}

@ -12,6 +12,7 @@ namespace Game.Battle
public Viewc_blood m_c_blood;
public ViewHitNum m_c_hitNum;
public ViewHitBuff m_c_hitBuff;
public ViewInteract m_c_Interact;
public const string URL = "ui://2qo7xpdcoi571q";
@ -33,6 +34,7 @@ namespace Game.Battle
m_c_blood = (Viewc_blood)this.GetChild("c_blood");
m_c_hitNum = (ViewHitNum)this.GetChild("c_hitNum");
m_c_hitBuff = (ViewHitBuff)this.GetChild("c_hitBuff");
m_c_Interact = (ViewInteract)this.GetChild("c_Interact");
}
}
}

@ -8,6 +8,7 @@ namespace Game.Battle
public partial class ViewInteract : GComponent
{
public Controller m_isTarget;
public Controller m_showInteract;
public GLoader m_n18;
public const string URL = "ui://2qo7xpdco85f57";
@ -26,6 +27,7 @@ namespace Game.Battle
base.ConstructFromXML(xml);
m_isTarget = this.GetController("isTarget");
m_showInteract = this.GetController("showInteract");
m_n18 = (GLoader)this.GetChild("n18");
}
}

@ -12,7 +12,6 @@ namespace Game.Battle
public Controller m_showExtra;
public Controller m_moduleType;
public Controller m_attackStatus;
public Controller m_showInteract;
public ViewbloodBarEnemy m_bloodBarEnemy;
public ViewshieldBarEnemy m_shieldBarEnemy;
public ViewstunBarEnemy m_stunBarEnemy;
@ -21,7 +20,6 @@ namespace Game.Battle
public GTextField m_n14;
public GGraph m_n15;
public GImage m_n17;
public ViewInteract m_Interact;
public const string URL = "ui://2qo7xpdcjrii21";
@ -43,7 +41,6 @@ namespace Game.Battle
m_showExtra = this.GetController("showExtra");
m_moduleType = this.GetController("moduleType");
m_attackStatus = this.GetController("attackStatus");
m_showInteract = this.GetController("showInteract");
m_bloodBarEnemy = (ViewbloodBarEnemy)this.GetChild("bloodBarEnemy");
m_shieldBarEnemy = (ViewshieldBarEnemy)this.GetChild("shieldBarEnemy");
m_stunBarEnemy = (ViewstunBarEnemy)this.GetChild("stunBarEnemy");
@ -52,7 +49,6 @@ namespace Game.Battle
m_n14 = (GTextField)this.GetChild("n14");
m_n15 = (GGraph)this.GetChild("n15");
m_n17 = (GImage)this.GetChild("n17");
m_Interact = (ViewInteract)this.GetChild("Interact");
}
}
}

@ -2,7 +2,7 @@
"hidden_packages": [],
"active_doc": [
"2qo7xpdc",
"teeb53"
"jrii24"
],
"expanded_nodes": [
"6tegmf7n",

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<component size="80,80" pivot="0.5,0.5" anchor="true">
<controller name="isTarget" pages="0,,1," selected="0"/>
<controller name="showInteract" pages="0,,1," selected="1"/>
<displayList>
<loader id="n18_o85f" name="n18" xy="40,40" pivot="0.5,0.5" anchor="true" size="80,80" alpha="0.5" rotation="0.5" url="ui://2qo7xpdco85f58" align="center" vAlign="middle" fill="scale">
<gearDisplay controller="showInteract" pages="1"/>
<gearSize controller="isTarget" pages="0,1" values="80,80,1,1|80,80,1.2,1.2" tween="true"/>
<gearLook controller="isTarget" pages="0" values="0.5,0.5,0,1" default="1,0,0,1" tween="true"/>
</loader>

@ -2,18 +2,17 @@
<component size="100,80" pivot="0.5,0.5" anchor="true">
<controller name="showshield" pages="0,fasle,1,true" selected="0"/>
<controller name="showhp" pages="0,false,1,true" selected="0"/>
<controller name="showExtra" pages="0,,1," selected="0"/>
<controller name="moduleType" pages="0,,1,,2," selected="0"/>
<controller name="showExtra" pages="0,,1," selected="1"/>
<controller name="moduleType" pages="0,,1,,2," selected="2"/>
<controller name="attackStatus" pages="0,,1,,2," selected="0"/>
<controller name="showInteract" pages="0,,1," selected="1"/>
<displayList>
<component id="n3_jrii" name="bloodBarEnemy" src="jrii24" fileName="Headbar/Comp/bloodBarEnemy.xml" xy="50,40">
<component id="n3_jrii" name="bloodBarEnemy" src="jrii24" fileName="HeadBar/Comp/bloodBarEnemy.xml" xy="50,40">
<gearDisplay controller="showhp" pages="1"/>
</component>
<component id="n16_teeb" name="shieldBarEnemy" src="jv7z4y" fileName="Headbar/Comp/shieldBarEnemy.xml" xy="50,40">
<component id="n16_teeb" name="shieldBarEnemy" src="jv7z4y" fileName="HeadBar/Comp/shieldBarEnemy.xml" xy="50,40">
<gearDisplay controller="showshield" pages="1"/>
</component>
<component id="n11_cg0f" name="stunBarEnemy" src="cg0f4u" fileName="Headbar/Comp/test/stunBarEnemy.xml" xy="20,49" size="59,4">
<component id="n11_cg0f" name="stunBarEnemy" src="cg0f4u" fileName="HeadBar/Comp/test/stunBarEnemy.xml" xy="20,49" size="59,4">
<gearDisplay controller="showExtra" pages="1"/>
<ProgressBar value="50" max="100"/>
</component>
@ -23,11 +22,11 @@
<item/>
<item/>
</list>
<component id="n13_x75m" name="hungryBarEnemy" src="x75m4v" fileName="Headbar/Comp/test/hungryBarEnemy.xml" xy="-8,81" size="44,5" rotation="270">
<component id="n13_x75m" name="hungryBarEnemy" src="x75m4v" fileName="HeadBar/Comp/test/hungryBarEnemy.xml" xy="-8,81" size="44,5" rotation="270">
<gearDisplay controller="showExtra" pages="1"/>
<ProgressBar value="50" max="100"/>
</component>
<text id="n14_x75m" name="n14" xy="12,57" size="75,27" fontSize="20" color="#ffffff" align="center" vAlign="middle" autoSize="none" shadowColor="#000000" shadowOffset="3,3" text="观战">
<text id="n14_x75m" name="n14" xy="12,57" size="75,27" fontSize="20" color="#0099ff" align="center" vAlign="middle" autoSize="none" shadowColor="#333333" shadowOffset="3,3" text="远程">
<gearDisplay controller="showExtra" pages="1"/>
<gearColor controller="moduleType" pages="1,2" values="#ffff00,#000000|#0099ff,#333333" default="#ffffff,#000000"/>
<gearText controller="moduleType" pages="0,1,2" values="观战|近战|远程"/>
@ -40,8 +39,5 @@
<gearDisplay controller="showshield" pages="1"/>
<relation target="n16_teeb" sidePair="right-left"/>
</image>
<component id="n18_o85f" name="Interact" src="o85f57" fileName="Headbar/Comp/Interact.xml" xy="50,80">
<gearDisplay controller="showInteract" pages="1"/>
</component>
</displayList>
</component>

@ -2,11 +2,12 @@
<component size="1920,1080">
<controller name="showLock" pages="1,,2," selected="0"/>
<displayList>
<component id="n9_so77" name="lock" src="so771v" fileName="Headbar/Comp/Lock.xml" xy="508,349" pivot="0.5,0.5" anchor="true">
<component id="n9_so77" name="lock" src="so771v" fileName="HeadBar/Comp/Lock.xml" xy="508,349" pivot="0.5,0.5" anchor="true">
<gearDisplay controller="showLock" pages="2"/>
</component>
<component id="n10_jrii" name="c_blood" src="jrii21" fileName="Headbar/Comp/c_blood.xml" xy="482,379" visible="false"/>
<component id="n11_dcv9" name="c_hitNum" src="dcv92e" fileName="Headbar/Comp/HitNum.xml" xy="650,369" visible="false"/>
<component id="n12_gzui" name="c_hitBuff" src="gzui35" fileName="Headbar/Comp/HitBuff.xml" xy="775,372" visible="false"/>
<component id="n10_jrii" name="c_blood" src="jrii21" fileName="HeadBar/Comp/c_blood.xml" xy="482,379" visible="false"/>
<component id="n11_dcv9" name="c_hitNum" src="dcv92e" fileName="HeadBar/Comp/HitNum.xml" xy="650,369" visible="false"/>
<component id="n12_gzui" name="c_hitBuff" src="gzui35" fileName="HeadBar/Comp/HitBuff.xml" xy="775,372" visible="false"/>
<component id="n13_d6bm" name="c_Interact" src="o85f57" fileName="HeadBar/Comp/Interact.xml" xy="896,373"/>
</displayList>
</component>
Loading…
Cancel
Save