【发布时间】:2014-04-29 04:08:51
【问题描述】:
我很难让我的健康条使用 RPC 通过 Unity 上的服务器同步。在我的游戏中,角色头上的生命值条应该会为整个服务器更新。这样你就可以只看另一个玩家并看到他们的健康栏。问题是,即使我通过网络发送信息并接收到信息,实际的物理条的比例也不会改变。不过,发出呼叫的玩家的栏已更改。
这是问题的截图:http://i.imgur.com/g2GozZv.png
当我发送 RPC 时,它确实会改变其他玩家的生命值,但不会影响规模。
我做了以下代码,但它不起作用:
void Start()
{
if(!networkView.isMine)
{
enabled = false;
}
}
void Update ()
{
if(Input.GetKey(KeyCode.Alpha2))
{
Minus_Health();
}
}
public void Minus_Health()
{
health -= 10;
healthBarLength = (float)health / (float)maxHealth / 5.1f;
healthBar.scale = new Vector2(healthBarLength, healthBar.scale.y);
Update_HP(health, maxHealth, healthBar.scale);
}
public void Update_HP(int hp, int maxHP, Vector3 bar)
{
networkView.RPC("Update_Health",RPCMode.All, hp, maxHP, bar);
}
[RPC]
public void Update_Health(int value, int value2, Vector3 bar)
{
health = value;
maxHealth = value2;
healthBar.scale = new Vector2(bar.x, bar.y);
}
我也试过这个,也没有运气:
void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
{
if (stream.isWriting)
{
Vector3 networkHealth = healthBar.scale;
stream.Serialize(ref networkHealth);
}
else
{
Vector3 networkHealth = Vector3.zero;
stream.Serialize(ref networkHealth);
healthBar.scale = networkHealth;
}
}
【问题讨论】:
标签: networking unity3d client rpc