1

私はオンライン ゲーム モードを備えた cocos2d-x ゲームを開発しています。Photon Cloud SDK ( http://www.exitgames.com )によって設計および実装されたオンライン ゲーム。ios版のみ実装しましたが動きません。私が実装したコードは打撃です。

void NetworkLogic::opJoinRandomRoom() {

ExitGames::Common::JVector<ExitGames::LoadBalancing::Room> roomList;
roomList = mLoadBalancingClient.getRoomList();

int count = roomList.getSize();
CCLog("Room Count = %d", count);
if(count == 0)
{

    this->opCreateRoom();

}else{

    mLoadBalancingClient.opJoinRandomRoom();

}

}

void NetworkLogic::update(float dt) {

this->run();

}

void NetworkLogic::run(void) {

if(mLastInput == INPUT_EXIT && mStateAccessor.getState() != STATE_DISCONNECTING && mStateAccessor.getState() != STATE_DISCONNECTED)
{
    disconnect();
    mStateAccessor.setState(STATE_DISCONNECTING);
}
else
{
    State state = mStateAccessor.getState();
    switch(state)
    {
    case STATE_INITIALIZED:
        connect();
        mStateAccessor.setState(STATE_CONNECTING);
        break;
    case STATE_CONNECTING:
        break; // wait for callback
    case STATE_CONNECTED:
        {
            ExitGames::Common::JVector<ExitGames::LoadBalancing::Room> roomList;
            roomList = mLoadBalancingClient.getRoomList();

            int count = roomList.getSize();
            ExitGames::Common::JString tmp;
            tmp = count;
            EGLOG(ExitGames::Common::DebugLevel::INFO, tmp);
            CCLog("Room count in Room = %d", count);
            switch(mLastInput)
            {

                case INPUT_CREATE_GAME: // create Game
                    opCreateRoom();
                    break;
                case INPUT_JOIN_RANDOM_GAME: // join Game
                    opJoinRandomRoom();
                    mStateAccessor.setState(STATE_JOINING);
                    break;
                default: // no or illegal input -> stay waiting for legal input
                    break;
            }
            break;
        }
    case STATE_JOINING:
        break; // wait for callback
    case STATE_JOINED:
        switch(mLastInput)
        {
        case INPUT_LEAVE_GAME: // leave Game
            mLoadBalancingClient.opLeaveRoom();
            mStateAccessor.setState(STATE_LEAVING);
            break;
        default: // no or illegal input -> stay waiting for legal input
            break;
        }
        break;
    case STATE_LEAVING:
        break; // wait for callback
    case STATE_LEFT:
        mStateAccessor.setState(STATE_CONNECTED);
        break;
    case STATE_DISCONNECTING:
        break; // wait for callback
    default:
        break;
    }
}
mLastInput = INPUT_NON;
mLoadBalancingClient.service();

最初に 1 つのアプリを実行すると、getRoomList 関数は 0 の値を返します。また、最初の部屋を作成して2番目のアプリを実行した後でも、getRoomList関数0が返されます。助けてください。

4

1 に答える 1