This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

스크립트 실행 제어

개요

Fusion이 SimulationBehaviourNetworkBehaviour 컴포넌트를 실행하는 상대 스크립트 순서를 제어하는 두 가지 주요 특성이 있습니다:

  • [OrderBefore]
  • [OrderAfter]

FixedUpdateNetwork()Render()와 같은 거의 모든 Fusion 콜백에 영향을 줍니다.

C#

[OrderBefore(typeof(MyOtherSimulationBehaviour)]
[OrderAfter(typeof(NetworkTransform), typeof(MyOtherNetworkBehaviour))]
public class MySimulationBehaviour : SimulationBehaviour {

}

유니티와 Fusion 콜백의 상대적인 순서

  • FixedUpdate()
  • FixedUpdateNetwork()
  • Update()
  • Render()
  • LateUpdate()

Update() 및 LateUpdate()

Render() 순서 제어를 위해 [OrderBefore][OrderAfter] 사용하는 대신, 표준 유니티 콜백을 사용할 수 도 있습니다:

  • Update() 모든 컴포넌트 유형들에 대해 모든 Fusion Render()호출 전에 항상 실행합니다.
  • LateUpdate() 모든 컴포넌트 유형들에 대해 모든 Fusion Render()호출후에 항상 실행합니다.

유니티 스크립트 실행 순서Update()LateUpdate()에 대한 스크립트 순서 제어를 위해 사용될 수 있습니다. 이는 일반적인 유니티 콜백이기 때문입니다.

노트: 유니티의 FixedUpdate()는 Fusion의 타이밍 메커니즘과 Fusion이 Physics.Simulate()를 호출하는 속도와는 완전히 독립적이기 때문에 대부분의 경우 사용해서는 안 됩니다.

정렬 프로세스

재컴파일 중 및 게임 시작 시 모든 SimulationBehaviours는 어셈블리에서 찾을 수 있으며 NetworkPhysicsSimulation3DNetworkPhysicsSimulation2D를 제외한 알파벳순으로 정렬됩니다.

먼저 각 SimulationBehaviour에서 [OrderBefore] 또는 [OrderAfter] 특성을 확인합니다. 클래스에 둘 다 없는 경우 부모 클래스가 반복적으로 검색되고 이러한 특성 중 하나를 가진 가장 가까운 부모의 속성이 사용됩니다. 그런 다음 모든 SimulationBehaviours가 정렬되어 모든 OrderBeforeOrderAfter 속성을 충족하는 결정론적 순서를 생성합니다.

주의: [OrderBefore][OrderAfter] 유형을 원하는 수만큼 지정할 수 있습니다. 해결할 수 없는 충돌을 만들면 디버그 로그에 충돌하는 스크립트를 나타내는 오류가 표시됩니다.

NetworkPhysicsSimulation3DNetworkPhysicsSimulation2D 는 처음에는 알파벳으로 분류된 다른 모든 SimulationBehaviours 다음으로 분류됩니다. 이 두 가지 중 하나 이후에 스크립트를 실행하려면 [OrderAfter] 속성을 사용하여 스크립트를 실행하도록 명시적으로 지시해야 합니다.

C#

[OrderAfter(typeof(NetworkPhysicsSimulation3D)]

상속

파생된 Behaviour에 [OrderBefore] 또는 [OrderAfter] 속성이 없는 경우 기본적으로 기본 클래스의 순서를 상속합니다. 그러나 파생 클래스가 [OrderBefore] 또는 [OrderAfter] 속성을 선언하는 경우 상위 클래스의 모든 순서 특성이 완전히 무시됩니다.

주의: 따라서 기본 클래스와 파생 클래스의 순서 속성은 추가가 안됩니다.

시뮬레이션 포함

[SimulationBehaviour] 속성을 사용하여 FixedUpdateNetwork()의 실행을 다음과 같이 제한할 수 있습니다.

  • 특정 단계(Resimulation 또는 Forward)에만 적용됩니다. 및/또는
  • 특정 피어 모드(서버 / 호스트 / 클라이언트)를 선택합니다.

C#

[SimulationBehaviour(
  Stages = SimulationStages.Forward, 
  Modes  = SimulationModes.Server | SimulationModes.Host
)]

Fusion 스크립트 실행 인스펙터

Fusion 스크립트 순서 창은 Fusion > Windows > Script Execution Inspector 메뉴를 통해 열 수 있습니다. 여기에는 다양한 스크립트가 어떤 순서로 그리고 시뮬레이션 단계에서 실행될지 표시됩니다.

주의: 스크립트 실행은 다음의 속성에 의해 제어됩니다:

  • [SimulationBehaviour]
  • [OrderBefore]
  • [OrderAfter]

Fusion 스크립트 실행 인스펙터 창은 이러한 속성들의 결과를 시각화하는 데만 사용됩니다. 변경하려면 스크립트에서 속성을 변경해야 합니다.

Back to top