HLAPIとLLAPIを併用する
複雑さを軽減するために、アプリ内でHLAPIとLLAPIを併用することはできるだけ避けることをお勧めします。ただし、AR体験でHLAPIとLLAPIを併用する必要がある場合は、以下の点に注意してください。
メッセージタグを確認する
各HlapiSessionでは、すべてのメッセージに単一のメッセージタグを使用します(セッションの構築時に設定)。そのため、一部の機能(ネットワークスポーンなど)にはHlapiを使用し、他のネットワーク機能にはLLAPI経由で未加工のバイトメッセージを送信して解析することができます。この場合、2つのシステムから送信されるメッセージの衝突を避けるために、使用されているメッセージタグを追跡することが特に重要です。
次のコード例では、HLAPIとLLAPIを併用して、PeerDataReceivedデリゲートのメッセージタグを確認し、メッセージがHLAPIメッセージではなく、処理する必要のあるLLAPIメッセージであることを確認します。
using Niantic.ARDK.AR.Networking; using Niantic.ARDK.Networking.HLAPI.Object.Unity; // Reference set in Inspector public NetworkedUnityObject _objectToNetworkSpawn; // Enum list containing all message tags used in the application public enum GameActionMessageTags : uint { // Other game actions PerformSomeGameAction = 40U, // ... } // Use the Hlapi to network spawn an object across all peers void SpawnObjectForAllPeers() { // Note that NetworkSpawn is an extension method coming from NetworkSpawner _objectToNetworkSpawn.NetworkSpawn(); } void PerformActionForAllPeers(IMultipeerNetworking networking, byte[] gameData) { networking.BroadcastData(GameActionMessageTags.PerformSomeGameAction, gameData, TransportType.UnreliableUnordered); } void SubscribeToPeerDataReceived(IMultipeerNetworking networking) { networking.PeerDataReceived += OnPeerDataReceived; } // Since the Hlapi also uses byte messages, this will be fired each time an object is NetworkSpawned as well void OnPeerDataReceived(PeerDataReceivedArgs args) { // Check that it is a message we care about, rather than an Hlapi message if(args.Tag != GameActionMessageTags.PerformSomeGameAction) { return; } // We now know this is the message that this class cares about, so use the data to perform some update }