松散耦合Unity3D - Engine Representation();

时间:2014-08-01 13:43:45

标签: c# unity3d loose-coupling

我正在开发一个unity3d项目。

我的大多数代码都与我正在使用的引擎松散耦合。含义为了移动一个玩家,我将拥有一个依赖于引擎的InputProxy,然后是一些引擎独立的代码,比如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 个答案:

没有答案