Ich stehe derzeit vor einem Problem, wenn ich versuche, die Intensität meines Lichts im Mehrspielermodus zu ändern.Ändern der Lichtstärke Unity Multiplayer
Die Lichtintensitäten ändert sich gut für die Person, die das Spiel, den Host, startet. Aber die Leute, die sich mit dem Wirt verbinden, ändern ihre Lichtintensität nicht.
Ich versuche, die Lichtintensität mit [SyncVar] zu ändern, aber der Spieler, der sich mit dem Host verbindet, sieht die Lichtintensitätsänderung überhaupt nicht. Hier ist mein Code:
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class dayNightCycle : NetworkBehaviour { //changes day and night based on the wavelevel SpawnManager_waveLevel.cs script
Light light;
float fadeTime = 1f;
[SyncVar(hook = "OnLightAmountChange")]
float lightAmout = 0f;
SpawnManager_waveLevel level;
public override void OnStartLocalPlayer()
{
light = GetComponentInChildren<Light>();
level = GetComponent<SpawnManager_waveLevel>();
light.intensity = lightAmout;
}
// Update is called once per frame
void Update() {
changeLight();
}
void changeLight()
{
if (isLocalPlayer)
{
if (level.waveCounter == 1)
{
lightAmout = 0.03f;
light.intensity = Mathf.Lerp(light.intensity, lightAmout, fadeTime * Time.deltaTime);
}
else
{
lightAmout = 1f;
light.intensity = Mathf.Lerp(light.intensity, lightAmout, fadeTime * Time.deltaTime);
}
}
}
void OnLightAmountChange(float amount)
{
lightAmout = amount;
changeLight();
}
}
Mein Problem ist, dass die Lichtintensität ändert sich nur für einen Spieler, den Host. Ich möchte, dass sich die Lichtintensität für alle Spieler ändert, die sich mit dem Spiel verbinden. Irgendwelche Vorschläge sind willkommen.
Ich fürchte, das wird nicht funktionieren, weil ich eine OnStartLocalPlayer() -Methode habe, was bedeutet, dass die else-Anweisung, die du komponiert hast, das Lichtobjekt nicht finden wird. – arjwolf