Write (로직스 노드)

From Neos Wiki
Revision as of 13:34, 12 April 2022 by R3C0D3r (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Other languages:
English • ‎日本語 • ‎한국어
Write
'Write' LogiX node
Inputs
  Impulse Write
  dummy Value
Outputs
  IValue`1 Target
  Impulse OnDone
  Impulse OnFail

Write 노드는 Write에 Impulse를 받으면, 입력측 Value값을 출력측 Target에 내보냅니다.

사용방법

이 노드는 처음 꺼내면, 입력측 Value는 dummy 자료형(자료형이 정해지지 않은 상태를 의미)을 가집니다. 입력에 사용 가능한 데이터를 연결하면 자료형이 결정됩니다. 입력 자료형이 경정되면 출력측 Target의 자료형도 동일하게 지정됩니다.


Target을 통해 값 쓰기가 성공 하거나 또는 인터페이스를 통해 직접연결(Drive)된 대상에 값을 쓰는 hook(예. Drive, ValueCopy 구성요소, 외) 작업이 성공하면 출력측 OnDone에서 Impulse가 발생합니다. 이 Impulse 출력은 Write가 받은 입력측 Impulse의 신호를 다음 노드로 전달하는데 이용할 수 있습니다.


만약, Write 노드가 Target으로 지정된 대상에 대해 값쓰기가 실패(사례, Target이 다른 노드나 구성요소에 의해 Drive되고 hook을 허용치 않는)하는 경우, 출력측의 OnFail로 Impulse가 출력됩니다. 이 Impulse도 OnDone과 마찬가지로 Write가 받은 입력측 Impulse의 신호를 다음 노드로 전달하는데 이용할 수 있습니다.


변수(Variables)노드와 구성요소의 속성(Field)값을 변경할때 사용합니다. Write 노드를 통해 데이터모델이 변경되면, 세션내 모든 사용자들과 동기화 됩니다. 변경된 값에 대한 동기화는 게임의 업데이트 루프 주기를 통해 이뤄지며, 1주기 업데이트 내에 값이 여러번 변경된다면, 마지막 값만 동기화되게 됩니다. 부가적으로, 1주기 내에 값이 여러번 바뀌었어도 시작시 값과 마지막 값이 동일하다면 동기화되지 않습니다. 그러므로, 꼭 필요한 경우가 아니면 업데이트가 발생할때마다 값을 쓰는것은 별로 바람직한 방법은 아닙니다. 지속적으로 값을 변경시켜야 하지만 정확한 동기화가 필요한 경우가 아니라면, 불필요한 네트워크 트래픽을 피하기 위해 드라이브 시스템을 사용하는 것이 좋습니다. 소스.

일반적으로, Write 및 Write Latch노드는 구성요소나 슬롯의 값형식(예. bool, int, string, float.... 등)의 필드에 연결하여 사용하며, 참조형식(예. slot, user, IAssetProvider<AudioClip> ... 등)의 경우 Write Ref 노드를 이용해야 합니다. 하지만, 이 노드는 /Variables 분류에 속한 변수 노드에는 쓰기가 가능하지만 Write Ref 노드는 변수노드에 쓰기가 불가합니다. 또한 일반적으로 권장되진 않지만, RefID를 입력측인 SetValueResetValue에 쓰는 경우, Write/Write Latch 노드를 사용하여 참조형 필드에 쓰는것이 가능합니다.

예제

Write 노드의 예제

노드 메뉴(Node Menu)

Actions
Back -- ++ Drive Drive Playback Tween Write
Write Latch Write Ref Write Ref Latch