マルチキャスト配信の対象クライアントの指定

目次

  概要
  事前設定
  MonobitEngine.VoiceChat.MonobitVoice.SetMulticastTarget メソッド(1)
  MonobitEngine.VoiceChat.MonobitVoice.SetMulticastTarget メソッド(2)
  MonobitEngine.VoiceChat.MonobitVoice.AddMulticastTarget メソッド(1)
  MonobitEngine.VoiceChat.MonobitVoice.AddMulticastTarget メソッド(2)
  MonobitEngine.VoiceChat.MonobitVoice.RemoveMulticastTarget メソッド(1)
  MonobitEngine.VoiceChat.MonobitVoice.RemoveMulticastTarget メソッド(2)
  MonobitEngine.VoiceChat.MonobitVoice.ClearMulticastTarget メソッド
  MonobitEngine.VoiceChat.MonobitVoice.GetMulticastTarget メソッド


概要

ボイスチャットについて「特定のプレイヤーに対してのみ発信」する場合の、送信相手の指定

  ここで紹介する機能では、先の ボイスチャットの送信方式の指定 について「特定のプレイヤーに対してのみの送信(StreamType.MULTICAST)」を指定した場合、
  その送信相手となるプレイヤーが誰になるのかを指定します。

  ここで特定の人間に対して送信することにより、ボイスチャットに対し指向性を持たせることができ、不用意に発言を拡散させることを防ぎます。


事前設定

MonobitVoice コンポーネントの追加が必要です

  ボイスチャット機能ですので、この機能を実装するスクリプトと同一の GameObejct に対し、
  MonobitVoice コンポーネントが追加されている必要があります。

処理を記述するクラスについて、MonoBehaviour クラスの継承が必要です

  上記 MonobitVoice コンポーネントを参照するために、自身の GameObject を参照する必要がありますので、
  実装するスクリプトクラスが、MonobitEngine.MonoBehaviour クラス、または UnityEngine.MonoBehaviour クラスを継承している必要があります。

ボイスチャットの送信方式で「StreamType.MULTICAST」を設定する必要があります

  上記にも示している通り、ボイスチャットの送信方式の指定 にて触れた VoiceChat.SendStreamType プロパティに対し、
  「StreamType.MULTICAST」すなわち「特定のプレイヤーに対してのみの送信」を代入しておく必要があります。

  デフォルト設定のまま、あるいは上記プロパティについて「StreamType.BROADCAST」を指定している場合には、
  ここでの送信先設定は反映されませんので、ご注意ください。

送信者自身、および送信相手が、ともに同一ルームに入室している必要があります

  送信対象は内部処理にて、ルーム内で割り当てられた各クライアントのプレイヤーID を参照しますので、
  送信者はもちろんのこと、送信相手となるクライアントも、同一ルーム内に入室した状態であることが必要条件です。

  また送信相手について、例えば退室要求や切断などにより「一度ルームから退室」してから「再入室」した場合、
  送信相手として再登録する必要があります ので、その点もご注意ください。


MonobitEngine.VoiceChat.MonobitVoice.SetMulticastTarget メソッド(1)

機能

  指定したプレイヤー群を、自身の発声に対するマルチキャストの送信相手として、リストに上書き登録します。

引数

変数名 内容
Int32[] targetPlayerIds 自身の発声の送信相手となる、同一ルーム内プレイヤーのID群を配列で指定します。

戻り値

内容
void -

記述例

/*
 * プレイヤーID「0番」「1番」「3番」を、自身の発声の送信相手として上書き登録します。
 *
 * このプロパティの値設定に際し、以下の3つの条件をすべて満たす必要があります。
 *  1. MonobitVoice.SendStreamRate に MStreamType.MULTICAST が設定されていること
 *  2. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  3. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.SetMulticastTarget(new Int32[] { 0, 1, 3 });
}


MonobitEngine.VoiceChat.MonobitVoice.SetMulticastTarget メソッド(2)

機能

  指定したプレイヤー群を、自身の発声に対するマルチキャストの送信相手として、リストに上書き登録します。

引数

変数名 内容
MonobitPlayer[] targetPlayers 自身の発声の送信相手となる、同一ルーム内プレイヤー情報群を配列で指定します。

戻り値

内容
void -

記述例

/*
 * ルームホストと自分自身を除くプレイヤーを、自身の発声の送信相手として上書き登録します。
 *
 * このプロパティの値設定に際し、以下の3つの条件をすべて満たす必要があります。
 *  1. MonobitVoice.SendStreamRate に MStreamType.MULTICAST が設定されていること
 *  2. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  3. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
List<MonobitEngine.MonobitPlayer> playerList = new List<MonobitEngine.MonobitPlayer>();
foreach( MonobitEngine.MonobitPlayer player in MonobitEngine.MonobitNetwork.otherPlayersList )
{
    if( player == MonobitEngine.MonobitNetwork.player ) continue;
    if( player == MonobitEngine.MonobitNetwork.host ) continue;
    playerList.Add(player);
}
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.SetMulticastTarget(playerList.ToArray());
}


MonobitEngine.VoiceChat.MonobitVoice.AddMulticastTarget メソッド(1)

機能

  指定したプレイヤーを、自身の発声に対するマルチキャストの送信相手として、リストに追加登録します。

引数

変数名 内容
Int32 targetPlayerId 自身の発声の送信相手となる、同一ルーム内プレイヤーのIDを指定します。

戻り値

内容
void -

記述例

/*
 * プレイヤーID「0番」を、自身の発声の送信相手として追加登録します。
 *
 * このプロパティの値設定に際し、以下の3つの条件をすべて満たす必要があります。
 *  1. MonobitVoice.SendStreamRate に MStreamType.MULTICAST が設定されていること
 *  2. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  3. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.AddMulticastTarget(0);
}


MonobitEngine.VoiceChat.MonobitVoice.AddMulticastTarget メソッド(2)

機能

  指定したプレイヤーを、自身の発声に対するマルチキャストの送信相手として、リストに追加登録します。

引数

変数名 内容
MonobitPlayer targetPlayer 自身の発声の送信相手となる、同一ルーム内プレイヤー情報を指定します。

戻り値

内容
void -

記述例

/*
 * ルームホストであるプレイヤーを、自身の発声の送信相手として追加登録します。
 *
 * このプロパティの値設定に際し、以下の3つの条件をすべて満たす必要があります。
 *  1. MonobitVoice.SendStreamRate に MStreamType.MULTICAST が設定されていること
 *  2. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  3. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.AddMulticastTarget(MonobitEngine.MonobitNetwork.host);
}


MonobitEngine.VoiceChat.MonobitVoice.RemoveMulticastTarget メソッド(1)

機能

  指定したプレイヤーを、自身の発声に対するマルチキャストの送信相手のリストから削除します。

引数

変数名 内容
Int32 targetPlayerId 自身の発声の送信相手となる、同一ルーム内プレイヤーのIDを指定します。

戻り値

内容
void -

記述例

/*
 * プレイヤーID「0番」を、自身の発声の送信相手対象から削除します。
 *
 * このプロパティの値設定に際し、以下の3つの条件をすべて満たす必要があります。
 *  1. MonobitVoice.SendStreamRate に MStreamType.MULTICAST が設定されていること
 *  2. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  3. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.RemoveMulticastTarget(0);
}


MonobitEngine.VoiceChat.MonobitVoice.RemoveMulticastTarget メソッド(2)

機能

  指定したプレイヤーを、自身の発声に対するマルチキャストの送信相手のリストから削除します。

引数

変数名 内容
MonobitPlayer targetPlayer 自身の発声の送信相手から除外する、同一ルーム内プレイヤー情報を指定します。

戻り値

内容
void -

記述例

/*
 * ルームホストであるプレイヤーを、自身の発声の送信相手対象から削除します。
 *
 * このプロパティの値設定に際し、以下の3つの条件をすべて満たす必要があります。
 *  1. MonobitVoice.SendStreamRate に MStreamType.MULTICAST が設定されていること
 *  2. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  3. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.RemoveMulticastTarget(MonobitEngine.MonobitNetwork.host);
}


MonobitEngine.VoiceChat.MonobitVoice.ClearMulticastTarget メソッド

機能

  自身の発声に対するマルチキャストの送信相手リストをクリアし、未登録状態に戻します。

引数

変数名 内容
- - -

戻り値

内容
void -

記述例

/*
 * 自身の発声の送信相手対象をクリアし、未登録状態に戻します。
 *
 * このプロパティの値設定に際し、以下の2つの条件をすべて満たす必要があります。
 *  1. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  2. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    monobitVoice.ClearMulticastTarget();
}


MonobitEngine.VoiceChat.MonobitVoice.GetMulticastTarget メソッド

機能

  自身の発声に対するマルチキャストの送信相手として登録しているプレイヤーID群を取得します。

引数

変数名 内容
- - -

戻り値

内容
Int32[] 自身の発声に対する送信相手として登録されているプレイヤーID群を返します。

記述例

/*
 * 現在自身の発声の送信相手として登録されているプレイヤーID群をデバッグ表示します。
 *
 * このプロパティの値設定に際し、以下の2つの条件をすべて満たす必要があります。
 *  1. このスクリプトをコンポーネント追加されているオブジェクトに対し、MonobitVoice コンポーネントがアタッチされていること。
 *  2. このスクリプトを記述するクラスが MonoBehaviour を継承していること
 */
MonobitEngine.VoiceChat.MonobitVoice monobitVoice = this.gameObject.GetComponent<MonobitEngine.VoiceChat.MonobitVoice>();
if (monobitVoice != null)
{
    string outString = "My Voice Multicast Target : ";
    foreach( Int32 id in monobitVoice.GetMulticastTarget() ) {
        outString += "id = " + id + " ";
    }
    Debug.Log(outString);
}