コード例 #1
0
    public override INetworkGameObject CreateGameObject()
    {
        INetworkGameObject g = GameObject.Instantiate(scoreBoardPrefab);

        g.gameObject.SetActive(false);
        return(g);
    }
コード例 #2
0
    public void ReceiveReplicatedGameObjects(ServerWorldState state)
    {
        receivedGameObjects.Clear();

        // Update objects
        for (int i = 0; i < state.ObjectStatesLength; i++)
        {
            NetworkObjectState objectState = state.GetObjectStates(i);
            INetworkGameObject go          = ReceiveReplicatedGameObject(objectState);
            receivedGameObjects.Add(go);
        }

        // Destroy objects we didn't receive in this update
        foreach (INetworkGameObject go in previouslyReceivedGameObjects)
        {
            if (!receivedGameObjects.Contains(go))
            {
                linkingContext.RemoveGameObject(go);
                go.Destroy();
            }
        }

        // Swap the previous and current sets
        HashSet <INetworkGameObject> temp = previouslyReceivedGameObjects;

        previouslyReceivedGameObjects = receivedGameObjects;
        receivedGameObjects           = temp;
    }
コード例 #3
0
    void TagLocalPlayer()
    {
        INetworkGameObject player = this.GetLocalPlayer();

        if (player != null)
        {
            player.gameObject.tag = "Player";
        }
    }
コード例 #4
0
    public void RemoveGameObject(INetworkGameObject go)
    {
        if (!gameObjectToNetworkIdDictionary.ContainsKey(go))
        {
            return;
        }

        int networkId = gameObjectToNetworkIdDictionary[go];

        networkIdToGameObjectDictionary.Remove(networkId);
        gameObjectToNetworkIdDictionary.Remove(go);
    }
コード例 #5
0
 public int GetNetworkId(INetworkGameObject go, bool shouldCreateIfNotFound)
 {
     if (gameObjectToNetworkIdDictionary.ContainsKey(go))
     {
         return(gameObjectToNetworkIdDictionary[go]);
     }
     else if (shouldCreateIfNotFound)
     {
         AddGameObject(go);
         return(gameObjectToNetworkIdDictionary[go]);
     }
     return(0);
 }
コード例 #6
0
    private INetworkGameObject ReceiveReplicatedGameObject(NetworkObjectState state)
    {
        int  networkId = state.NetworkId;
        byte classId   = (byte)state.StateType;

        INetworkGameObject go = linkingContext.GetGameObject(networkId);

        if (go == null)
        {
            go = objectCreationRegistry.CreateGameObject(classId);
            linkingContext.AddGameObject(go, networkId);
        }

        go.Replicate(state);

        return(go);
    }
コード例 #7
0
 public void AddGameObject(INetworkGameObject go, int networkId)
 {
     networkIdToGameObjectDictionary.Add(networkId, go);
     gameObjectToNetworkIdDictionary.Add(go, networkId);
 }
コード例 #8
0
 private void AddGameObject(INetworkGameObject go)
 {
     AddGameObject(go, nextNetworkId++);
 }