スキルレベルに基づいてルームを見つける方法

スキルレベルを使用してルームを検索できるようにするには、ルームの全メンバーの平均レベルを保存しておく必要があります。これは、SetRoom()メソッドを使用して行うことができます。

StrixNetwork.instance.SetRoom(
    1,                                  // ルームのID
    new RoomProperties { key1 = 25 },   // 平均スキルレベル
    args => {
        Debug.Log("SetRoom succeeded");
    },
    args => {
        Debug.Log("SetRoom failed. error = " + args.cause);
    }
);

スキルレベルでルームを検索するには、GreaterThanEquals()とLessThanEquals()を使用して範囲検索を実行します。

StrixNetwork.instance.SearchJoinableRoom(
    new And(
        new List<ICondition> {
            new GreaterThanEquals(new Field("key1"), new Value((double)24)),
            new LessThanEquals(new Field("key1"), new Value((double)28))
        }
    ),
    null, 10, 0,
    args => {
        foreach (var roomInfo in args.roomInfoCollection) {
            logger.Info("roomId " + roomInfo.roomId + " name " + roomInfo.name);
        }
    },
    args => {
        logger.Info("SearchJoinableRoom failed. error = " + args.cause);
    }
);

次の例では、ConditionBuilderを使用しています。

StrixNetwork.instance.SearchJoinableRoom(
    ConditionBuilder.Builder()
        .Field("key1").GreaterThanEquals((double)24)
        .And()
        .Field("key1").LessThanEquals((double)28)
        .Build(),
    null, 10, 0,
    args => {
        foreach (var roomInfo in args.roomInfoCollection) {
            logger.Info("roomId " + roomInfo.roomId + " name " + roomInfo.name);
        }
    },
    args => {
        logger.Info("SearchJoinableRoom failed. error = " + args.cause);
    }
);