[Add] FishNet

This commit is contained in:
2026-03-30 20:11:57 +07:00
parent ee793a3361
commit c22c08753a
1797 changed files with 197950 additions and 1 deletions
@@ -0,0 +1,36 @@
using FishNet.Object;
using UnityEngine;
namespace FishNet.Demo.HashGrid
{
public class GridSpawner : NetworkBehaviour
{
[SerializeField]
private NetworkObject _staticPrefab;
[SerializeField]
private NetworkObject _movingPrefab;
[SerializeField]
private int _movingCount = 100;
[SerializeField]
private byte _spacing = 2;
private float _range => MoveRandomly.Range;
public override void OnStartServer()
{
for (int x = (int)(_range * -1); x < _range; x += _spacing)
{
for (int y = (int)(_range * -1); y < _range; y++)
{
NetworkObject n = Instantiate(_staticPrefab, new(x, y, transform.position.z), Quaternion.identity);
Spawn(n);
}
}
for (int i = 0; i < _movingCount; i++)
{
NetworkObject n = Instantiate(_movingPrefab, transform.position, transform.rotation);
Spawn(n);
}
}
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 5f70001444cb8ef49bef71f3b6e3a925
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 207815
packageName: 'FishNet: Networking Evolved'
packageVersion: 4.6.22R
assetPath: Assets/FishNet/Demos/HashGrid/Scripts/GridSpawner.cs
uploadId: 866910
@@ -0,0 +1,86 @@
using FishNet.Object;
using UnityEngine;
namespace FishNet.Demo.HashGrid
{
public class MoveRandomly : NetworkBehaviour
{
// Colors green for client.
[SerializeField]
private Renderer _renderer;
// How quickly to move over 1s.
private float _moveRate = 0.5f;
// Maximum range for new position.
public const float Range = 25f;
// Position to move towards.
private Vector3 _goal;
// Position at spawn.
private Vector3 _start;
private void Update()
{
if (!IsController)
return;
transform.position = Vector3.MoveTowards(transform.position, _goal, _moveRate * Time.deltaTime);
if (transform.position == _goal)
RandomizeGoal();
}
public override void OnStartNetwork()
{
_start = transform.position;
RandomizeGoal();
}
public override void OnStartServer()
{
if (!Owner.IsValid)
transform.position = _start + RandomInsideRange();
}
public override void OnStartClient()
{
if (Owner.IsLocalClient)
{
_renderer.material.color = Color.green;
_moveRate *= 3f;
transform.position -= new Vector3(0f, 0f, 1f);
Camera c = Camera.main;
c.transform.SetParent(transform);
c.transform.localScale = Vector3.one;
c.transform.localPosition = new(0f, 0f, -5f);
}
else
{
_renderer.material.color = Color.gray;
}
}
public override void OnStopClient()
{
if (IsOwner)
{
Camera c = Camera.main;
if (c != null)
{
c.transform.SetParent(null);
c.transform.localScale = Vector3.one;
}
}
}
private void RandomizeGoal()
{
_goal = _start + RandomInsideRange();
}
private Vector3 RandomInsideRange()
{
Vector3 goal = Random.insideUnitSphere * Range;
goal.z = transform.position.z;
return goal;
}
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 10f399a5388d3b3459b7a8476ae13e6a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 207815
packageName: 'FishNet: Networking Evolved'
packageVersion: 4.6.22R
assetPath: Assets/FishNet/Demos/HashGrid/Scripts/MoveRandomly.cs
uploadId: 866910