このページは編集中です。更新が保留になっている可能性があります。

Subsystems

Simple Network Sync API には、一般的なネットワーキング問題に対応するサブライブラリが含まれています。 サブライブラリのほとんどには基本的な実装がされており、多くのプロジェクトで十分に機能しますが、APIを使って機能させたり、独自のものを作るためのガイドとして設計されています。

目次

コンタクトシステム

ContactTriggerコンポーネント

Sync Animatorコンポーネント

このコンポーネントはネットワークコリジョン・トリガー・ヒットスキャンイベントなどへの共通の出発地点です。 2つのContactTriggers間でコンタクトが発生すると、IOnContactEvent.OnContactEvent()コールバックを生成します。 IContactTrigger を使用する全ての IContactSystem に対してOnContactEvent()が発生します。

トップに戻る

SyncContactコンポーネント

Sync Contact Component

ContactTrigger(上記)と同じGameObjectにこのコンポーネントが存在する場合、ContactTriggerは全てのOnContactEventコールバックを遅延させシリアライズ化します。ローカルでトリガーするだけではありません。 かわりに、このコンポーネントは処理のためにContactEventを取得します。 そうすることによってリモートのコントローラ権限を持つContactSystemsがイベントを処理することが可能になります。

使用例としては、ContactTriggerがシューターでトリガーされるヒットスキャンの武器がありますが、影響を受ける体力のシステムは別のプレイヤーに属します。シューターのSyncObjectが生成されたContactEventsを収集し、それらをシリアライズ化して全クライアントに送信し、そこでイベントが再度発生します。

トップに戻る

IOnContactEvent.OnContactEvent(ContactEventイベント)

2つのContactTriggerがコンタクトを登録すると生成されるコールバックです。ContactEventは互換性のあるContactReactorにコンタクトする各ContactSystem(VitalSystem/Inventory System)に生成されます。

トップに戻る

IContactSystem

他のNetObjectsとの間でTriggerやPickupのインタラクションを生成できるコンポーネントを定義するシステムのルートインターフェースです。

トップに戻る

IContactReactor

IContactSystemと作用するコンポーネントを定義します。 Tピックアップアイテムとバイタルやインベントリシステムの間のインタラクションのフローです。

トップに戻る

Projectiles And Hitscans

Projectiles and Hitscans can produce ContactEvents similar to normal collisions.

トップに戻る

SyncCannonコンポーネント

Sync Cannonコンポーネント

同一のGameObject上でContactTriggerのプロキシとして動作することのできるプロジェクタイルを生成するコンポーネントです。 プロジェクタイルが関与しているコリジョンイベントやトリガーイベントは、OnContactEventコールバックをSyncCannonコンポーネントのあるオブジェクトに発射します。

トップに戻る

Contact Projectile

Contact Projectileコンポーネント

プロジェクタイルプレハブは、ContactProjectileコンポーネントか、IProjectile を実装するコンポーネントを持つ必要があります。

トップに戻る

SyncContactScanコンポーネント

Sync Contact Scanコンポーネント

コライダーを持つContactTriggerコンポーネントに対してヒットを検証する全体的なヒットスキャンを生成するコンポーネントです。 ヒットで、同じオブジェクトでContactReactorコンポーネントに処理されるOnContactEventが生成されます。

トップに戻る

Contact Groups

Unityのタグやレイヤーの欠点を回避するLayer/Groupマスクシステムです。 Unityのタグは正確なビットマスクではなくストリングベースで、Unityのレイヤーは物理の縛りがあり、ネットワーキングに理想的ではありません。

システムそのものはとてもシンプルです。 ContactGroupSettingsシングルトンはグループ名を保存し、これをビットマスクに翻訳します。 ContactGroupAssignコンポーネントはコライダーを持つGameObjectに追加することができます。 その後、コリジョン・トリガー・レイキャストの結果にGetComponent<ContactGroupAssign>().Maskを呼び出してヒットコライダーが対象のグループに属するものか決定できます。

トップに戻る

ContactGroupAssignコンポーネント

Contact Group Assignコンポーネント

ランタイムでインデックス付けされた名前のグループを持つオブジェクトのContactGroupを関連付けるのにこのコンポーネントを使用します Apply To Children が有効になっていると、このコンポーネントを、ContactTriggerコンポーネントを持つ全ての子トランスフォームに複製します。ただし、独自のContactGroupAssignがない場合です。

トップに戻る

Contact Group設定

Contact Group設定

この設定シングルトンでグループの名づけ・追加・マスクシステムからの削除ができます・

トップに戻る

Inventory Contact System

BasicInventoryコンポーネント

IInventory\, IContactSystem

Basic Inventoryコンポーネント

このベースクラスとInventory Systemのインターフェイスは、残りのSimpleコードベースと自動的に連動するInventoryコンポーネントの作成を可能にします。

TはInventoryの容量を定義する構造体です。 BasicInventoryコンポーネントは、TにVector3を使用し、ベースを拡張して独自のInventory構造体とロジックを使用して独自のInventory Systemを作成する方法を示します。

トップに戻る

InventoryContactReactorコンポーネント

IInventoryable\, IContactReactor

Inventory Contact Reactorコンポーネント

インベントリシステムのベースクラスとインターフェイスで、オブジェクトをアイテムとみなして IInventory と相互作用できるようにします。

インベントリIInventoryableアイテムを正常に追加するためには、以下がtrueでなければなりません。 - SyncPickupは、OnContactEvent()を受信し、OnContactEvent()(通常はContactTriggerから)を受信する必要があります。 - ピックアップオブジェクトには IInventoryable コンポーネント(InventoryContactReactors など)が必要で、衝突するオブジェクトには IInventoryBasicInventory など)コンポーネントが必要です。 - T タイプは一致させます。 - PickupオブジェクトのSyncStateは、IInventory のDefaultMountと一致する有効なMountを定義する必要があります。 - HitGroupMasks は一致する必要があります。

トップに戻る

Vitals Contact System

SyncVitalsコンポーネント

IVitalsSystem : IContactSystem

Sync Vitalsコンポーネント

体力、エネルギー、シールド、パワーなどの同期を行うための汎用コンポーネント。 このコンポーネントはContactGroups Systemを利用します。

トップに戻る

Type

このバイタルの名前/ID。 内部的には、これは既知のタイプの列挙によって支えられています。 カスタムタイプは、主導でコード化された名前をハッシュ化します。

トップに戻る

Start Value

このバイタルがリセットまたは初期化されたときに戻る値。

トップに戻る

Full Value

通常の最大値。 実行時にこの値を変更する場合は、Max Value以下でないとシリアライズが中断されます。 現在の値を Overload でフラグを立てることができ、現在の値をFull Valueよりも大きくすることができます (Max Valueよりは小さくする)。

トップに戻る

Max Value

最高値。 シリアル化に必要なビット数を決定するために使用します。 そのため、この値は実行時に変えるべきではありません。

トップに戻る

Absorption

このバイタルが受けるダメージの割合 残りは次のバイタルに適用されます。

トップに戻る

Regen Delay/Rate

ダメージを受けてから、このバイタルが再生を再開するまでにかかる秒数。 レートは1秒間にどれだけの価値が追加されるかを表します。

トップに戻る

Decay Delay/Rate

オーバーロード(Full Valueよりも大きな値となること)から、このバイタルがFull Valueへと下がり始めるまでにかかる秒数。レートとは、1秒間にどれだけの値が下がるかを表します。

トップに戻る

Auto Despawn

ルートのバイタルが0になると、SyncStateコンポーネントでOnDespawnイベントが発生します。

トップに戻る

Reset On Spawn

SyncStateがレスポーンとしてフラグを立てたOnChangeStateコールバックを発行すると、すべてのバイタル値がstart valueに戻されます。

トップに戻る

VitalsContactReactorコンポーネント

IContactReactor

Contact Triggerコンポーネント

Vitals Contact Reactorコンポーネント

VitalsContactReactorはOnContactEventに応答し、ContactReactorと互換性がある場合、ContactSystemに変更をトリガーします。

トップに戻る

Mount System

Mount Managerコンポーネント

Mount Managerコンポーネント

トップに戻る

Mountコンポーネント

Mountコンポーネント

トップに戻る

Mount設定

Mount設定

トップに戻る

AutoMountHitscanコンポーネント

Auto Mount Hitscan

このコンポーネントは、1ティックごとにヒットスキャンを行い、その親である NetObject/SyncState を、ヒットスキャンで見つかった他の NetObject のマウントに添付します。 主な用途は、オブジェクトをプラットフォームや自動車など、モーションが相対化されるべき移動するオブジェクトに自動的に再親化することです。

オブジェクトを移動する親にマウントすることで、トランスフォームシンクはグローバル空間ではなくローカル空間を使用することができます。 オブジェクトの所有者が異なっていても、それらのオブジェクトは接続されたままになり、レイテンシの違いによる遅延状態になることはありません。

トップに戻る

ProjectileとHitscan

SyncCannonコンポーネント

トップに戻る

SyncContactScanコンポーネント

トップに戻る

Utilities

MaskLogic

Mask Logic Drawer

このドロワーは、基本的なマスク比較よりも複雑な組み合わせのマスクテストを作成するためにコンポーネントが使用するものです。

ロジックドロップダウンは、適用されるテストを EQUALS、ADD、または ORタイプから選択します。 マスクは、以下から bool 結果を生成します: Evaluate(int mask)

ドキュメントのトップへ戻る