См. SetParent
необязательный параметр
worldPositionStays
Если true
, родительская относительная позиция , масштаб и вращение изменяются так, что объект сохраняет то же положение, вращение и масштаб в мировом пространстве, что и раньше.
и
Значение по умолчанию для аргумента worldPositionStays равно true .
card.transform.SetParent(deck.transform, false);
приводит к тому, что ваш объект помещается на нового родителя , сохраняя относительную позицию .
То, что вы скорее всего хотите, это сохранить мировую позицию , поэтому передать true
(или ничего, поскольку true
по умолчанию)
card.transform.SetParent(deck.transform);
равно
card.transform.SetParent(deck.transform, true);
равно простому присвоению Transform.parent
card.transform.parent = deck.transform;
Это очищено, теперь посмотрите на ваш метод:
card.transform.SetParent(table.transform);
card.GetPhotonView().RPC("Initialize", RpcTarget.Others, false, null);
card.GetPhotonView().RPC("Initialize", player, true, null);
card.transform.SetParent(deck.transform);
Два вопроса:
- Это проходит без ожидание результатов, так что
card.transform.SetParent(deck.transform);
в основном называется "немедленно" и, вероятно, еще до того, как анимация началась Вы можете безоговорочно пропустить card.transform.SetParent(table.transform);
- , также он не выполняет это на других клиентах, только один из которых выполняет
InitializeCards
. На всех других клиентах card
будет сохранять своего исходного родителя (вероятно, null
= scene root)
Вы бы предпочли использовать родительские функции в самом методе Initialize
, который получает вызывается на всех клиентах и делает это как обратный вызов после завершения moveTo
или до его запуска.