docs.unity3d.com
    Show / Hide Table of Contents

    Interface ICommandData

    Commands (usually inputs) that must be sent from client to server to control an entity (or any other thing) should implement the ICommandData interface. Prefer using the ICommandData over Rpc if you need to send a constant stream of data from client to server

    ICommandData, being a subclass of IBufferElementData, can also be serialized from server to the clients and natively support the presence of GhostComponentAttribute and GhostFieldAttribute. As such, the same rule for buffers apply: if the command buffer must be serialized, then all fields must be annotated with a GhostFieldAttribute. Failure to do so will generate code-generation errors.

    However, differently from normal component, ICommandData buffers are not serialized to all the clients by default. In particular, in absence of a GhostComponentAttribute governing the serialization behavior the following set of options are set: PrefabType is set to All. The buffer is present on all the ghost variant. OwnerPredictedSendType is set to Predicted. Only predicted ghost can receive the buffer and interpolated variant will have the component stripped or disabled. OwnerSendType is set to SendToNonOwner. If the ghost has an owner, is sent only to the clients who don't own the ghost.

    Is generally not recommended to send back to the ghost owner its own commands. For that reason, setting the SendToOwner flag will be reported as a error and ignored. Also, because they way ICommandData works, some care must be used when setting the PrefabType property:

    • Server: While possible, does not make much sense. A warning will be reported.
    • Clients: The ICommandData buffer is stripped from the server ghost. A warning will be reported
    • InterpolatedClient: ICommandData buffers are stripped from the server and predicted ghost. A warning will be reported
    • Predicted: ICommandData buffers are stripped from the server and predicted ghost. A warning will be reported.
    • AllPredicted: Interpolated ghost will not have the command buffer.
    • All: All ghost will have the command buffer.
    Namespace: Unity.NetCode
    Syntax
    public interface ICommandData : IBufferElementData

    Properties

    Tick

    Declaration
    uint Tick { get; set; }
    Property Value
    Type Description
    UInt32
    In This Article
    • Properties
      • Tick
    Back to top
    Terms of use
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023