iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
佛心分享-SideProject30

使用unity 及 photon fusion 打造線上RTS遊戲系列 第 13

Day 13 Photon Fusiobn Network Behaviour

  • 分享至 

  • xImage
  •  

Network Behaviour

public class NetworkAnimal : NetworkBehaviour{
    [Networked]
    TickTimer cooldownTimer { get; set; }
    [Networked]
    public float currentHealth { get; set; }
    public bool canAttack => cooldownTimer.ExpiredOrNotRunning(Runner);
    [Rpc (RpcSources.All, RpcTargets.StateAuthority, HostMode = RpcHostMode.SourceIsHostPlayer)]
    public void RPC_Damage(float damage, NetworkObject networkObject,RpcInfo info = default)
    {
        if (canAttack && networkObject.TryGetComponent<IBeDamaged>(out var beDamagedObj))
        {
             beDamagedObj.BeDamaged(damage);

             cooldownTimer = TickTimer.CreateFromSeconds(Runner, cooldownTime);
        }
    }
    public override void Render()
    {
        base.Render();
        bloodBar.UpdateBloodInfo(currentHealth, maxHealth);
    }
}


前面提到諸多概念如已連網屬性、RPC、FixedUpdateNetwork()皆都是在Network Behaviour中使用,而Network Behaviour都會在NetworkObject底下中生效,可以說Network Behaviour就是為了網路行為而生的。
Network Behaviour有著NetworkBehaviourId,作為網路物件的識別。

Render 函數

由於Fusion是基於網路固定刷新,以固定時間模擬結果,但如果在此狀態下使用Update()則會十分不穩定,因為Update可能會在兩個FixedUpdateNetwork()之間有多個更新,但使用Render()便會穩定在FixedUpdateNetwork()結束後刷新。


上一篇
Day 12 Photon Fusion 攻擊及冷卻
系列文
使用unity 及 photon fusion 打造線上RTS遊戲13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言