Слабая связь Unity3D - ToEngineRepresentation();

Я работаю над проектом unity3d.

Большая часть моего кода слабо связана с движком, с которым я работаю. Значение Для перемещения игрока у меня будет InputProxy, который зависит от Engine, а затем некоторый независимый от движка код, такой как InputController, InputManager для вызова PlayerManager с надписью "MoveForward(Player)", в этом случае слабосвязанная связь в действительности не является проблемой. Потому что у меня будет реализация EnginePlayer, где вызов MoveForward будет переведен в соответствующий код движка.

Теперь у меня следующая ситуация: я хочу порождать аватара моего игрока в мире по сети.

Помимо множества других вызовов это заканчивается в NetworkProxy.SpawnAvatarOnNetwork(INetworkPlayer). Вы можете найти полный код ниже, но часть моего вопроса об этом

`var avatarPrefab = player.Client.Player.Avatar.ToEngineAvatar() as GameObject;`

Является ли это хорошей практикой, предоставляя в моей структуре приведение к "версии двигателя", или вы сделали бы это по-другому?

Это код SpawnAvatarOnNetwork:

public void InitializeNetworkAwareAvatar(INetworkPlayer player)
    {
        if (player == null)
            throw new ArgumentNullException("avatar"); 

        var uLinkNetworkPlayer = (uLink.NetworkPlayer)player.EngineNetworkPlayer;

        var avatarPrefab = player.Client.Player.Avatar.ToEngineAvatar() as GameObject;

        var appendLoginData = false; // TODO Integrate login data
        object[] initialData = appendLoginData ? uLink.Network.loginData : new object[0];

        uLink.Network.Instantiate(uLinkNetworkPlayer, 
                                    avatarPrefab,
                                    avatarPrefab,
                                    avatarPrefab,
                                    player.Client.Player.Avatar.Position,
                                    player.Client.Player.Avatar.Rotation,
                                    0, //Magical number - No different network groups at the moment
                                    initialData
                                  );
    }

0 ответов

Другие вопросы по тегам