Слабая связь 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
);
}