51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using FishNet.Managing.Observing;
|
|
using FishNet.Object;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace FishNet.Demo.NetworkLod
|
|
{
|
|
|
|
public class NetworkLodTester : NetworkBehaviour
|
|
{
|
|
[SerializeField]
|
|
private NetworkObject _prefab;
|
|
[SerializeField]
|
|
private ObserverManager _observerManager;
|
|
[Range(1, 8)]
|
|
[SerializeField]
|
|
private byte _lodLevel = 8;
|
|
|
|
private const int _count = 500;
|
|
private const float _xyRange = 15f;
|
|
private const float _zRange = 100f;
|
|
|
|
private void Awake()
|
|
{
|
|
List<float> distances = _observerManager.GetLevelOfDetailDistances();
|
|
while (distances.Count > _lodLevel)
|
|
distances.RemoveAt(distances.Count - 1);
|
|
}
|
|
|
|
public override void OnStartServer()
|
|
{
|
|
base.OnStartServer();
|
|
|
|
for (int i = 0; i < _count; i++)
|
|
{
|
|
float x = Random.Range(-_xyRange, _xyRange);
|
|
float y = Random.Range(-_xyRange, _xyRange);
|
|
float z = Random.Range(0f, _zRange);
|
|
|
|
Vector3 position = new Vector3(x, y, z);
|
|
NetworkObject obj = Instantiate(_prefab, position, Quaternion.identity);
|
|
obj.name = $"Obj {i.ToString("0000")}";
|
|
base.Spawn(obj);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} |