스크립트 실행 제어
개요
Fusion이 SimulationBehaviour
및 NetworkBehaviour
컴포넌트를 실행하는 상대 스크립트 순서를 제어하는 두 가지 주요 특성이 있습니다:
[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()
모든 컴포넌트 유형들에 대해 모든 FusionRender()
호출 전에 항상 실행합니다.LateUpdate()
모든 컴포넌트 유형들에 대해 모든 FusionRender()
호출후에 항상 실행합니다.
유니티 스크립트 실행 순서는 Update()
및 LateUpdate()
에 대한 스크립트 순서 제어를 위해 사용될 수 있습니다. 이는 일반적인 유니티 콜백이기 때문입니다.
노트: 유니티의 FixedUpdate()
는 Fusion의 타이밍 메커니즘과 Fusion이 Physics.Simulate()
를 호출하는 속도와는 완전히 독립적이기 때문에 대부분의 경우 사용해서는 안 됩니다.
정렬 프로세스
재컴파일 중 및 게임 시작 시 모든 SimulationBehaviours
는 어셈블리에서 찾을 수 있으며 NetworkPhysicsSimulation3D
및 NetworkPhysicsSimulation2D
를 제외한 알파벳순으로 정렬됩니다.
먼저 각 SimulationBehaviour
에서 [OrderBefore]
또는 [OrderAfter]
특성을 확인합니다. 클래스에 둘 다 없는 경우 부모 클래스가 반복적으로 검색되고 이러한 특성 중 하나를 가진 가장 가까운 부모의 속성이 사용됩니다. 그런 다음 모든 SimulationBehaviours
가 정렬되어 모든 OrderBefore
와 OrderAfter
속성을 충족하는 결정론적 순서를 생성합니다.
주의: [OrderBefore]
및 [OrderAfter]
유형을 원하는 수만큼 지정할 수 있습니다. 해결할 수 없는 충돌을 만들면 디버그 로그에 충돌하는 스크립트를 나타내는 오류가 표시됩니다.
NetworkPhysicsSimulation3D
및 NetworkPhysicsSimulation2D
는 처음에는 알파벳으로 분류된 다른 모든 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 스크립트 실행 인스펙터
창은 이러한 속성들의 결과를 시각화하는 데만 사용됩니다. 변경하려면 스크립트에서 속성을 변경해야 합니다.