AddToPackageMap

Тема в разделе "Кодинг", создана пользователем mantis, 11 мар 2018.

  1. mantis

    mantis Соучастник

    Приветствую!!

    Не могу понять как работает функция AddToPackageMap
    У меня в мутатторе прописано так

    [​IMG]

    При этом, как пишут в документации, отсутствует bAddToServerPackages=True в defaultpropertis

    Какой толк от данной функции и в каких случаях её нужно добавлять вместе с bAddToServerPackages?

    Господа гуру, помогите!!!
     
  2. Essence

    Essence Солдат

    Если есть необходимость в том, чтобы пакет закачивался на клиент, используется bAddToServerPackages=True или AddToPackageMap.
    В случае с мутатором, обычно используется bAddToServerPackages=True, ибо в основном классе Mutator есть следующее:
    Код:
    event PreBeginPlay()
    {
        if ( !MutatorIsAllowed() )
            Destroy();
        else if (bAddToServerPackages)
            AddToPackageMap();
    }
    Если параметр в AddToPackageMap пропущен, то будет загружен пакет, в котором находится данный актёр.
    Иногда AddToPackageMap используется в мутаторе, чтобы клиент мог скачать какие-то ресурсы.
    Например ClanLogoMut
    Там AddToPackageMap используется для того, чтобы логотипы кланов закачивались на клиент.
     
    Последнее редактирование: 11 мар 2018
    mantis и Flame нравится это.
  3. mantis

    mantis Соучастник

    спасибо!

    то есть я так понимаю, что одновременное нахождение AddToPackageMap() например в PreBeginPlay() и
    bAddToServerPackages=True в defaultproperties - это бессмысленно?
    Достаточно будет оставить в таком случае только bAddToServerPackages=True?
     
  4. mantis

    mantis Соучастник

    еще вопрос, влияет и как-то параметр RemoteRole=ROLE_SimulatedProxy
    или любое другое значение на bAddToServerPackages?

    или еще есть ли необходимость ставить if (Level.NetMode != NM_Standalone) перед AddToPackageMap()?
     
  5. Essence

    Essence Солдат

    На сам параметр нет.
    Можно указать bAddToServerPackages=True для клиентского мутатора, но при этом не прописать
    Код:
        bAlwaysRelevant=True
        RemoteRole=ROLE_SimulatedProxy
    И мутатор будет закачан на клиент, но толку то, он на нём не выполняется.
    А вот если прописать тот код, что я указал выше, то клиентский мутатор будет работать корректно.
    Необходимости нет, если это не одиночная игра. Да и для одиночки я думаю эт ни к чему.