2 - Scene and Player
概述
第2部分說明了如何設定一個簡單的場景以及如何建立一個玩家預製件。在本章節的最後,您將看到一個可用的已連網場景,該場景為每個連線的客戶端生成一個玩家物件。
設定場景
從一個空的Unity場景開始。以右鍵按一下Unity中的階層分頁,然後選擇Fusion > Scene > Setup Networking in Scene。
 
這將為場景新增一個Prototype Runner和一個Prototype Network Start。
 
- Prototype Runner包含- Network Runner,這是運行Fusion模擬的核心元件。- Network Events指令碼允許您將自己的函數快速連結到各種網路事件,如玩家加入或離開遊戲階段。
- Prototype Network Start是一個原型元件,其中包含用於快速加入Fusion房間的啟動程序GUI。
接下來,將地板添加到場景中,以右鍵按一下Unity中的階層分頁,然後選擇3D Object > Plane。將遊戲物件重新命名為Floor,並將其位置重新設定為(0, 0, 0)。
 
有了這些,場景設定就完成了。
建立玩家預製件
接下來建立玩家物件。以右鍵按一下階層並選擇3d Object > Capsule。將遊戲物件重新命名為PlayerCharacter。
向其中新增NetworkObject元件。此元件為物件提供網路識別,以便所有同儕節點都可以參照它。
新增一個CharacterController元件。這將在之後被移動程式碼用來移動玩家角色。
最後,新增一個NetworkTransform組件到它。NetworkTransform會自動將物件的位置同步到其他客戶端。
將PlayerCharacter拖到Project視窗中,以建立一個預製件並將它從場景中刪除。這樣,玩家角色就可以開始生成了。
玩家生成
與單人玩家遊戲不同,僅僅在場景中有一個單一玩家物件是不夠的。對於多人玩家遊戲,需要為每個加入遊戲階段的玩家生成一個玩家物件。為此,需要一個自訂指令碼。建立一個PlayerSpawner指令碼並開啟它。向其中新增以下程式碼:
C#
using Fusion;
using UnityEngine;
public class PlayerSpawner : SimulationBehaviour, IPlayerJoined
{
    public GameObject PlayerPrefab;
    public void PlayerJoined(PlayerRef player)
    {
        if (player == Runner.LocalPlayer)
        {
            Runner.Spawn(PlayerPrefab, new Vector3(0, 1, 0), Quaternion.identity);
        }
    }
}
生成程式碼非常簡單。IPlayerJoined介面有一個PlayerJoined函數,當玩家加入遊戲階段時,如果行為與運行器在同一個遊戲物件上,就會調用該函數。這種情況發生在我們自己的玩家身上,也發生在從不同裝置加入的任何其他玩家身上。它只需要為我們自己的玩家生成一個玩家物件。當使用Runner.Spawn生成物件時,它會自動複製到所有其他客戶端。
模擬行為用於存取網路運行器,其包含有關目前遊戲階段的所有資訊,包括本機玩家的玩家ID。將PlayerSpawner元件新增到Prototype Runner遊戲物件中,並指派PlayerCharacter預製件給它。
有了這個,玩家生成就完全設定好了。進入遊玩模式,然後按Start Shared Client以在共享模式下啟動Fusion。
 
一個玩家膠囊將出現在場景中。玩家還不能移動或與任何東西互動。在下一章節中,我們將透過執行玩家移動來讓玩家成為栩栩如生。
 
下一章是 共享模式基礎3 - 移動與相機
Back to top