add unity project for networking

This commit is contained in:
2025-12-08 14:26:01 +01:00
parent e031ff4bb0
commit c00ddb866c
267 changed files with 17068 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
using System;
using Unity.Netcode;
using UnityEngine;
namespace DefaultNamespace
{
public class Menu : MonoBehaviour
{
[SerializeField] private GameObject sessionMenu;
private void Start()
{
NetworkManager.Singleton.OnServerStarted += OnServerStarted;
NetworkManager.Singleton.OnClientStarted += OnServerStarted;
}
private void OnDisable()
{
NetworkManager.Singleton.OnServerStarted -= OnServerStarted;
NetworkManager.Singleton.OnClientStarted -= OnServerStarted;
}
private void OnServerStarted()
{
sessionMenu.SetActive(false);
}
}
}
+3
View File
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7bab525765504ec4aee5797b494810a3
timeCreated: 1765190119
@@ -0,0 +1,73 @@
using System;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.UI;
namespace DefaultNamespace
{
public class NetworkPlayer : NetworkBehaviour
{
[Header( "Player Settings" )]
[SerializeField] private float speed = 10.0f;
[SerializeField] private float initialHealth = 100.0f;
[Header( "Elements")]
[SerializeField] private Camera playerCamera;
[SerializeField] private Canvas playerCanvas;
[SerializeField] private Image playerHealthBar;
[Header( "Prefabs" )]
[SerializeField] private NetworkObject projectilePrefab;
private NetworkVariable<float> _health = new NetworkVariable<float>();
public override void OnNetworkSpawn()
{
playerCamera.gameObject.SetActive(IsLocalPlayer);
playerCanvas.gameObject.SetActive(IsLocalPlayer);
if (IsLocalPlayer)
{
_health.OnValueChanged += OnValueChanged;
}
if (IsServer)
{
_health.Value = initialHealth;
}
}
public override void OnNetworkDespawn()
{
if (IsLocalPlayer)
{
_health.OnValueChanged -= OnValueChanged;
}
}
private void OnValueChanged(float previousValue, float newValue)
{
playerHealthBar.fillAmount = newValue / initialHealth;
}
private void Update()
{
if (!IsLocalPlayer) return;
Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0.0f, Input.GetAxis("Vertical"));
transform.Translate(input * (speed * Time.deltaTime));
if (Input.GetButtonDown("Fire1"))
{
FireProjectileRpc();
}
}
[Rpc(SendTo.Server)]
private void FireProjectileRpc()
{
NetworkObject projectile = Instantiate(projectilePrefab, transform.position, Quaternion.identity);
projectile.Spawn(true);
}
}
}
@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1c51d25de9864edbb50b68457d532859
timeCreated: 1765192645