상태 복제
값을 복제한다는 의미는 네트워크/연결을 통해 다른 기계에서 값을 재생산하는 것 입니다. Bolt는 상태 를 정의하여 네트워크상으로 전송되는 중요한 정보를 쉽게 정의할 수 있습니다.
BoltEntity 의 상태 는 소유자 만이 변경할 수 있습니다. 소유자가 아닌 어딘가에 상태를 변경하려고 시도하는 것은 네트워크상에서 복제가 되지 않을 것이라는 것을 의미합니다.
메카님/상태 상호작용/상태 속성 변경하기
상태가 붙여질 때 Animator/Transform 링크를 기억해주세요( 즉, Bolt.EntityBehaviour<YourStateNameHere>
로 부터 상속받은 스크립트내에서):
public override void Attached ()
{
state.transform.SetTransforms(transform);
state.SetAnimator(GetComponentInChildren<Animator>()); //Or wherever your animator is
}
그리고나서, 에디터 내에서 상태 속성들이 모두 적절하게 설정되었으면, 해야할 것은 링크된 속성들을 변경하는 것이고 Animator는 의도된대로 복제되어야 할 것 입니다. 상태내의 메카님 속성들의 에디터내 예:
그리고나서, 속성을 변경하기 위해서(메카님-전용이 아니며 이 메소드는 어떤 속성 변경에 사용될 수 있습니다): 스크립트내에서 Bolt.EntityBehaviour<YourStateNamehere>
로 부터 상속 받습니다.
state.RunningSpeed = currentSpeed;
컨트롤러가 꽤 많은 양의 코드를 실행하고 있는 유일한 것이지만( 예, if(BoltNetwork.isOwner)
루프 내에 래핑), Bolt는 이 변수를 네트워크를 통해 복제할 것이고, 상태 속성들이 위에 보여진 대로 설정되어 있으면 자동적으로 애니메이터로 넣을 것입니다.
컨트롤러에게 복제
기본적으로 Bolt는 값들을 컨트롤러가 아닌 모든 클라이언트들에게 복제할 것입니다. 컨트롤러에게 복제 사용을 하기 위해서는 Bolt 에디터(Bolt 0.4+) 의 상태 속성 조이스틱 아이콘 활성화 할 필요가 있습니다.
컨트롤러에게 복제는 언제 사용하나요?
다음의 상황일 때는 이 것을 끄도록 유지하는 것이 타당합니다:
- 컨트롤러에게 완전 제어 권한을 허용하고 싶은 속성.
resetState==true
인 곳에서ExecuteCommand()
내의 서버/소유자로 부터 수신된 상태에 의해서 업데이트되는 속성.
이외 다음과 같은 경우에서는 이것을 켜 주세요:
- 소유자/서버가 설정할 속성이고 컨트롤러가 설정하지 않으면 컨트롤러 끝에서 속성 값을 받기 위해 이것을 켜야합니다.