我正在开发一个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
);
}